我有一個來自多個主題的數據的R數據框,每個主題都測試了幾次。要對集合進行統計,主題(「id」)和每個觀察的行(由「會話」因子給出)都有一個因子。即R:根據更少行中的缺失值刪除多行
print(allData)
id session measure
1 1 7.6
2 1 4.5
3 1 5.5
1 2 7.1
2 2 NA
3 2 4.9
在上述示例中,有一個簡單的方法,以消除與ID == 2中的所有行,鑑於「測量」列包含NA中的行中的一個其中id == 2?
更一般地說,因爲對於每個主題我實際上有很多度量(列)和四個會話(行),是否有一種優雅的方式來刪除具有給定級別的「id」因子的所有行, (至少)具有此「id」級別的行之一在列中包含NA?
我有直覺,有可能是一個內置的功能,可以更完美地解決這個問題比我目前的解決方案:
# Which columns to check for NA's in
probeColumns = c('measure1','measure4') # Etc...
# A vector which contains all levels of "id" that are present in rows with NA's in the probeColumns
idsWithNAs = allData[complete.cases(allData[probeColumns])==FALSE,"id"]
# All rows that isn't in idsWithNAs
cleanedData = allData[!allData$id %in% idsWithNAs,]
謝謝, /喬納斯
可能有一種方法可以用'sqldf'來實現,但我認爲它從根本上不會更簡單。 – 2012-03-28 12:14:36