如果某一列中有 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()]
我的数据名为“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()]