R-排除子集中特定列中包含NA的行



我正在尝试排除子集的行,该子集包含我选择的特定列的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 Workspace时,我将其设置为data <- read.csv(..., na.strings='.')。为了进行分析,我然后按学期和类型创建子集,例如set13 <- subset(data, term=1 & type=2)。当我试图进行t检验时,我注意到该功能抛出了任何NA的实例,有效地将样本量切成两半。

对于我的分析,我想排除缺少调查项目的响应,例如我的示例中的Bob,缺少问题3。但是我仍然想在nameidnum列中包括一个或多个NAS的行。因此,从本质上讲,我想通过省略NAS的列进行选择。(请记住,这只是一个例子 - 我的实际CSV有大约1000行,因此每个子集可能包含100-150行。)

我知道可以使用数据框架完成,但是我不确定如何将其纳入给定的子集格式。有办法做到吗?

请查看 complete.cases,如该答案所示。

data[complete.cases(data[,3:6]),]

这将返回所有行,并在第3至6列中提供完整的信息。

另一种方法。

data[rowSums(is.na(data[,3:6]))==0,]

另一个选项是

data[!Reduce(`|`, lapply(data[3:6], is.na)),]

最新更新