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

zh1*_*zh1 3 r subset dataframe

我正在尝试排除包含我选择的特定列的 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
Run Code Online (Sandbox Code Playgroud)

当我创建 R 工作区时,我将其设置为data <- read.csv(..., na.strings='.'). 为了进行分析,我然后按术语和类型创建了子集,例如set13 <- subset(data, term=1 & type=2)。当我尝试进行 t 检验时,我注意到该函数丢弃了任何 NA 实例,有效地将我的样本量减少了一半。

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

我知道这可以使用数据框来完成,但我不确定如何将其合并到我给定的子集格式中。有没有办法做到这一点?

Ril*_*n42 5

请查看complete.casesSO 帖子的答案中所示的内容。

data[complete.cases(data[,3:6]),]
Run Code Online (Sandbox Code Playgroud)

这将返回第 3 列到第 6 列中包含完整信息的所有行。