2016-08-02 52 views
0

Ich repliziere einen R-Code für die Bayes-Analyse, aber ich habe diesen Fehler, dass ich versucht habe, es zu lösen, lesen auch andere Fragen hier, aber immer noch es nicht funktioniert. Ich benutze den gleichen Datensatz und die gleichen Variablen (von OECD). Kann mir jemand sagen, warum es nicht funktioniert? Mein Code ist dies:undefinierte Spalten ausgewählt (Bayessche Analyse)

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 Daten in 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) 

Wenn ich die Zeile dat=dat[c(v.resp,v.treat,v.student.conf,v.school.conf)] ich den Fehler Fehler bei [.data.frame bekam laufen (dat, c (v.resp, v. treat, v.student.conf, v.school.conf)): undefinierte Spalten ausgewählt

Ich habe 25000 Beobachtung und 900 Variablen, aber ich möchte meine Daten mit 21 Variablen und die damit verbundenen Beobachtungen (weniger th ein 25000 sicher). Ich setze ein Komma dazwischen)] aber nichts, andere Zeilen lese ich alle Daten.

Ich betreibe auch diesen Code von „Quick-R-Website“ aber wieder die gleiche Fehlermeldung

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

Ich mag würde verstehen, warum es nicht funktioniert. Ich kopiere und kopiere diese Codes aus einem Papier, das sie für den gleichen Datensatz verwendet. Danke.

+1

Könnten Sie laufen 'jede (c (v.resp, v.treat, v.student.conf, v.school. conf)% in% Namen (dat)) '? Wenn es FALSE zurückgibt, sind die Spaltennamen nicht im Datenrahmen vorhanden. Vielleicht übergibt 'read.dta' die Spaltennamen nicht korrekt – Vandenman

+0

Vielen Dank! Ich habe versucht, und ich habe keine Fehlermeldung, die Beobachtungen sind weniger als vorher, aber ich habe noch 900 Variablen, wenn ich 21 haben sollte (diejenigen, die ich behalten möchte) – sicecon

Antwort

0

Die Nachricht besagt: undefinierte Spalten ausgewählt. Genau so ist es hier: Sie haben nur die gewünschten Zeilen ausgewählt, aber vergessen zu sagen, welche Spalten. Wenn Sie für Untermengen [] verwenden, müssen Sie die Zeilen und Spalten angeben. Sie benötigen also ein Komma, um die Informationen für die Zeilen und für die Spalten zu trennen. Da Sie keine Auswahl für Zeilen haben, müssen Sie nach dem Komma nichts angeben. Aber das Komma wird benötigt. Der eingestellte Code:

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

Der einzige Unterschied ist das Komma vor dem Schließen]