【问题标题】:delete rows that contain NAs in certain columns R删除某些列中包含 NA 的行 R
【发布时间】:2012-10-12 11:22:59
【问题描述】:

我有一个包含许多列的 data.frame。我想在其中 4 列中保留没有 NA 的行。复杂性源于我有其他允许在其中包含 NA 的行,因此我不能使用 complete.cases 或 is.na。最有效的方法是什么?

【问题讨论】:

  • “其他行”还是“其他列”?它是哪一个?向我们展示一些数据。

标签: r dataframe


【解决方案1】:

您仍然可以使用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

【讨论】:

  • 我错了!你可以使用它!谢谢乔希。我不知道看到答案很简单是不是不好......
  • @pepsimax -- 我认为答案是,有这么简单的解决方案真是太好了;)一定会喜欢complete.cases()...
  • 1:4之前不应该有,,即x[complete.cases(x[,1:4]),]
  • @urwaCFC 鉴于 R 的子集 data.frames 的语法/规则,它们的含义完全相同。即,他们都说“请把x的前四列还给我。
猜你喜欢
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 2019-01-06
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
相关资源
最近更新 更多