2017-08-25 53 views
-3

目前,我正在使用從SPSS文件導入的r數據集轉換爲csv。數據包括多種因素,如性別,種族和測試組,以及我想總結的一組權重。我想根據多個條件(即女性+白色+組1)對這些權重進行求和,因此我嘗試對數據進行子集化。在R中設置數據將返回0列,619行

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

不過,我得到以下錯誤:

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

我發現,試圖在任何情況下,選擇組1時,R返回奇怪的結果:

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

的結構「組」如下:

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

有誰知道是什麼導致了這種情況發生?

+3

它更容易幫助你,如果你提供一個[重複的例子] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。你確定你的data.frame的列名是正確的嗎(R區分大小寫)? – MrFlick

+0

'「group」== 1'總是'FALSE'。也許你想'small.set [「group」] == 1'。 –

+0

在你的第一條指令中,你使用了兩個帶有'subset'的df。不要這樣做。一次做一個。另外,對於'subset'你不需要重複df的名字,'gender == 1&group == 1'就可以。 –

回答

0

你爲什麼不使用aboid樣品和直接使用:

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

另一個好方法是使用data.table包:

library(data.table) 

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