2017-08-25 3 views
-3

Derzeit arbeite ich mit einem Dataset in r, die ich aus einer SPSS-Datei in eine CSV konvertiert importiert. Die Daten umfassen mehrere Faktoren wie Geschlecht, ethnische Zugehörigkeit und Testgruppe sowie eine Reihe von Gewichtungen, die ich zusammenfassen möchte. Ich möchte diese Gewichte auf der Grundlage mehrerer Bedingungen summieren (d. H. Weiblich + weiß + Gruppe1), also habe ich versucht, die Daten zu unterteilen.Subsetting Daten in R gibt 0 Spalten, 619 Zeilen

small.set<-subset(df, df[,"gender"]==1 & df[,"ethnicity"] ==1 & 
df[,"group"==1]) 

Allerdings bekomme ich folgende Fehlermeldung:

Error in matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr, 
: 'data' must be of a vector type, was 'NULL' 

Ich fand, dass, wenn sie versuchen Gruppe auszuwählen 1 in jedem Fall R seltsame Ergebnisse zurückgegeben:

df["group"==1] 
> data frame with 0 columns and 619 rows 

Die Struktur "Gruppe" ist wie folgt:

str(df["group") 
>Factor w/ 3 levels "1", "2", "3": 1 3 1 1 2... 

Weiß jemand, was das verursacht?

+3

Es ist einfacher, Ihnen zu helfen, wenn Sie bieten ein [reproduzierbares Beispiel] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Sind Sie sicher, dass die Spaltennamen Ihres data.frame korrekt sind (R unterscheidet zwischen Groß- und Kleinschreibung)? – MrFlick

+0

'" group "== 1' ist immer' FALSE'. Vielleicht willst du 'small.set [" group "] == 1'. –

+0

In Ihrer ersten Anweisung verwenden Sie zwei dfs mit 'subset'. Tu das nicht. Tun Sie es nacheinander. Auch bei 'subset' müssen Sie den Namen des df nicht wiederholen,' gender == 1 & group == 1' genügt. –

Antwort

0

warum nicht Sie aboid Probe mit und direkt verwenden:

small.set<-df[df$gender == 1 & df$ethnicity == 1 && df$group == 1,] 

Eine weitere gute Möglichkeit data.table Paket verwendet:

library(data.table) 

df<-data.table(df) 
small.set<-df[.(gender==1,ethnicity == 1,group == 1)]