删除包含特定列中NA值的行 R

12

我有一个包含许多列的数据框。我想要保留那些在其中4列没有遗漏值的行。但是,这里还有一些允许存在NA值的行,所以我不能使用complete.cases或is.na。最高效的方法是什么?


1
“其他行”还是“其他列”?能给我们展示一些数据吗? - Brandon Bertelsen
1个回答

17

你仍然可以使用complete.cases()函数。只需将其应用于所需的列(如下面示例中的第1至4列),然后使用它返回的布尔向量从整个数据框中选择有效行。

set.seed(4)
x <- as.data.frame(replicate(6, sample(c(1:10,NA))))
x[complete.cases(x[1:4]),]
#    V1 V2 V3 V4 V5 V6
# 1   7  4  6  8 10  5
# 2   1  2  5  5  1  2
# 5   6  8  4 10  6  6
# 6   2  6  9  3  4  4
# 7   4  3  3  1  2  1
# 9   8  5  2  7  7  3
# 10 10 10  1  2  5 NA

我错了!你可以使用它!谢谢Josh。我不知道看到答案是否很简单是好还是不好... - cianius
1
@pepsimax -- 我认为答案是这样的,这有一个如此简单的解决方案;)得爱complete.cases()... - Josh O'Brien
x[complete.cases(x[,1:4]),] 中,1:4 前面不应该有 , 吗? - Urvah Shabbir
@urwaCFC 鉴于 R 用于子集化数据框的语法/规则,这两个表达完全相同。也就是说,它们都表示“请将 x 的前四列返回给我”。 - Josh O'Brien
如果您想指定列名而不是列位置,该如何使用此方法? - thentangler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接