如果某行在某一列中具有NA值,则如何删除该行

时间:2018-02-07 08:12:28

标签: r na

我的数据名为“dat”:

A   B   C
NA  2   NA
1   2   3
1   NA  3
1   2   3

如果B列中有NA,我希望删除所有行:

A   B   C
NA  2   NA
1   2   3
1   2   3

na.omit(dat)删除所有带NA的行,而不仅仅是NA在B列中的行。

此外,我想知道如何在两列中找到NA值。

我感谢所有建议!

4 个答案:

答案 0 :(得分:7)

最简单的解决方案是使用is.na()

df[!is.na(df$B), ]

给你:

   A B  C
1 NA 2 NA
2  1 2  3
4  1 2  3

答案 1 :(得分:1)

试试这个:

df<-data.frame(A=c(NA,1,1,1),B=c(2,2,NA,2),C=c(NA,3,3,3))
df<-df[-which(is.na(df$B)),]
df
   A B  C
1 NA 2 NA
2  1 2  3
4  1 2  3

答案 2 :(得分:0)

如果您使用tidyverse,这是一个绝妙的解决方案!

它包含库tidyr,该库提供了非常直观的方法drop_na

所以您只需:

library(tidyverse)

dat %>% drop_na("B")

答案 3 :(得分:0)

这应该有效

dat = dat[dat['B'].notnull()]