如何仅删除在 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 的行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章