我正在尝试排除包含我选择的特定列的NA的子集的行。我有一个这种组织的调查数据的CSV电子表格,例如:
name idnum term type q2 q3
bob 0321 1 2 0 .
. . 3 1 5 3
ron . 2 4 2 1
. 2561 4 3 4 2
当我创建我的R工作区时,我将其设置为data <- read.csv(..., na.strings='.')
。为了我的分析,我然后按术语和类型创建子集,例如set13 <- subset(data, term=1 & type=2)
。当我尝试进行t检验时,我注意到该函数抛出了NA的任何实例,有效地将我的样本大小减半。
对于我的分析,我想排除缺少调查项目的响应,例如我的示例中的Bob,缺少问题3.但我仍然希望在name
中包含具有一个或多个NA的行或idnum
列。所以,实质上,我想通过省略NAs的列来选择。 (请记住,这只是一个示例 - 我的实际CSV有大约1000行,因此每个子集可能包含100-150行。)
我知道这可以使用数据框完成,但我不确定如何将其合并到我给定的子集格式中。有没有办法做到这一点?
答案 0 :(得分:4)
答案 1 :(得分:3)
另一种方法。
data[rowSums(is.na(data[,3:6]))==0,]
答案 2 :(得分:2)
另一种选择是
data[!Reduce(`|`, lapply(data[3:6], is.na)),]