【问题标题】:How to remove only rows that have all NA in R? [duplicate]如何仅删除在 R 中具有所有 NA 的行? [复制]
【发布时间】:2018-12-15 07:07:09
【问题描述】:

我有一个数据框,其中只有一些行全部为 NA。 如何循环并删除所有这些行? 我试过 na.omit() 但这不起作用。 在此示例中,我需要删除第 3 行和第 5 行

x1 <- c("Bob", "Mary","","Jane","")
x2 <- c("Bob","Mary","","Jane","")
x3 <- c("Bob", "Mary","","Jane","")
x4 <- c("Bob","Mary","","Jane","")

df <- data.frame(x1,x2,x3,x4)

df <- df %>% na.omit()

【问题讨论】:

  • 这包含零 NA ...尽管根据您的描述,@gos 的建议是答案:complete.cases

标签: r loops na


【解决方案1】:
> df[rowSums(df=="")!=ncol(df), ]
    x1   x2   x3   x4
1  Bob  Bob  Bob  Bob
2 Mary Mary Mary Mary
4 Jane Jane Jane Jane

【讨论】:

  • 虽然这个答案可能是正确且有用的,但最好在其中附上一些解释来解释它如何帮助解决问题。如果有更改(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。
【解决方案2】:

这是一种选择;首先你需要定义 NA 模式。

df[df == ""] <- NA # define NA pattern
df[rowSums(is.na(df)) != ncol(df), ] # result
# Try with x1 <- c("Bob", "Mary","","","") 

【讨论】:

  • 行得通。谢谢
猜你喜欢
  • 2019-12-28
  • 2011-09-02
  • 2017-06-12
  • 2013-11-25
  • 2019-11-14
  • 1970-01-01
  • 2019-01-06
  • 2014-11-13
  • 1970-01-01
相关资源
最近更新 更多