我有一个 R 数据框,其中包含来自多个主题的数据,每个主题都测试了几次。为了对集合进行统计,有一个主题(“id”)的因子和每个观察的一行(由因子“会话”给出)。IE
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 的行,假设“measure”列在 id==2 的行之一中包含 NA?
更一般地说,由于我实际上为每个主题有很多度量(列)和四个会话(行),有没有一种优雅的方法来删除具有给定“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,]
谢谢,/乔纳斯