【发布时间】:2012-10-12 11:22:59
【问题描述】:
我有一个包含许多列的 data.frame。我想在其中 4 列中保留没有 NA 的行。复杂性源于我有其他允许在其中包含 NA 的行,因此我不能使用 complete.cases 或 is.na。最有效的方法是什么?
【问题讨论】:
-
“其他行”还是“其他列”?它是哪一个?向我们展示一些数据。
我有一个包含许多列的 data.frame。我想在其中 4 列中保留没有 NA 的行。复杂性源于我有其他允许在其中包含 NA 的行,因此我不能使用 complete.cases 或 is.na。最有效的方法是什么?
【问题讨论】:
您仍然可以使用complete.cases()。只需将其应用于所需的列(下例中的列 1:4),然后使用它返回的布尔向量从整个 data.frame 中选择有效行。
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
【讨论】:
complete.cases()...
1:4之前不应该有,,即x[complete.cases(x[,1:4]),]
x的前四列还给我。