2016-08-02 6 views
0

Я копирую код R для байесовского анализа, но я получил эту ошибку, которую я попытался решить, а также прочитал здесь другие вопросы, но все же это не работает. Я использую тот же набор данных и те же переменные (от OECD). Может ли кто-нибудь сказать мне, почему это не работает? Мой код заключается в следующем: данныевыбранные уникальные столбцы (байесовский анализ)

rm(list=ls()) 
# Name of variables to be extracted 
v.resp=c("pv1math") # Response Variable 
v.treat=c("IC02Q01","IC02Q02","IC02Q03") # Treatment variable(s) 
# Student Confoundings 
v.student.conf=c("Age", "Gender", "isced_0", "IMMIG", "HEDRES", "WEALTH", "ESCS","FAMSTRUC","hisced","hisei","HOMEPOS", "TIMEINT") 
# School Confoundings 
v.school.conf=c("CLSIZE","SCMATEDU","STRATIO","SMRATIO","PublicPrivate") 

## LOAD DATA 
dat <- read.dta("name.dta") 
## Weighted sample with weights in the w vector 
w=dat$W_FSTUWT 

Subset в R

dat=dat[c(v.resp,v.treat,v.student.conf,v.school.conf)] 
names(dat)[names(dat)==v.resp]="y" 
w=w[complete.cases(dat)] 
w=w/sum(w) 
nw=function(w) w/sum(w) 
dat=dat[complete.cases(dat),] 
dim(dat) 

Когда я запускаю линию dat=dat[c(v.resp,v.treat,v.student.conf,v.school.conf)] я получил ошибку Ошибка в [.data.frame (Дат, с (v.resp, v. treat, v.student.conf, v.school.conf)): выбраны неопределенные столбцы

У меня есть 25000 наблюдений и 900 переменных, но я хочу подмножить свои данные с 21 переменной и связанными с ними наблюдениями (меньше 25000 наверняка). Я помещаю запятую между ними)], но ничего, запустите другие строки, я теряю все данные.

Я также запустить этот код с «сайта Quick-R», но опять же сообщение об ошибке

# select variables v1, v2, v3 
myvars <- c("v1", "v2", "v3") 
newdata <- mydata[myvars] 

Я хотел бы понять, почему это не работает. Я копирую и вставляю эти коды из бумаги, которая использовала их для одного и того же набора данных. Спасибо.

+1

Не могли бы вы запустить 'любой (с (v.resp, v.treat, v.student.conf, v.school. conf)% in% names (dat)) '? Если он возвращает FALSE, то имена столбцов не существуют в фреймворке данных. Возможно, 'read.dta' просто неправильно передает имена столбцов. – Vandenman

+0

Спасибо! Я попытался, и у меня нет этого сообщения об ошибке, наблюдения меньше, чем раньше, но у меня есть еще 900 переменных, когда мне должно быть 21 (те, которые я хочу сохранить) – sicecon

ответ

0

Сообщение указано: выбраны неопределенные столбцы. Вот в чем ситуация: вы только выбрали нужные вам строки, но забыли указать, в каких столбцах. Когда вы используете [] для подмножества, вы должны указать строки и столбцы. Итак, вам нужна запятая для разделения информации для строк и столбцов. Поскольку у вас нет выбора в строках, вам не нужно указывать что-либо после запятой. Но запятая необходима. Скорректированный код:

dat=dat[c(v.resp,v.treat,v.student.conf,v.school.conf),] 

Единственным отличием является запятая перед закрытием]