我有一个来自多个主题的数据的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