如何仅删除在 R 中具有所有 NA 的行? [复制]

Posted

技术标签:

【中文标题】如何仅删除在 R 中具有所有 NA 的行? [复制]【英文标题】:How to remove only rows that have all NA in R? [duplicate] 【发布时间】: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 【参考方案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","","","") 

【讨论】:

行得通。谢谢

以上是关于如何仅删除在 R 中具有所有 NA 的行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何删除具有 NA 值的“行”? [复制]

小技巧-只删除某一列中含NA的行(R)

在为选定列分配变量后,如何删除一些具有 NA 值的行?

从R中的data.table中删除带有NA的行[重复]

如何在 R data.frame 中查找和删除所有缺少数据的行块?

在R中删除带有NA的行[重复]