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

How to remove row if it has a NA value in one certain column

我的数据名为“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 值。

感谢所有建议!

试试这个:

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

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

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

这给你:

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

如果您使用 tidyverse!

有一个优雅的解决方案

它包含提供方法 drop_na 的库 tidyr,阅读起来非常直观。

所以你只需要做:

library(tidyverse)

dat %>% drop_na("B")

dat %>% drop_na(B)

如果 B 是列名

这应该有效

dat <- dat[dat['B'].notnull()]