'How to remove row if it has a NA value in one certain column [duplicate]
My data called "dat":
A B C
NA 2 NA
1 2 3
1 NA 3
1 2 3
I want to be all rows to be removed if it has an NA in column B:
A B C
NA 2 NA
1 2 3
1 2 3
na.omit(dat) removes all rows with an NA not just the ones where the NA is in column B.
Also I'd like to know how to this for NA value in two columns.
I appreciate all advice!
Solution 1:[1]
there is an elegant solution if you use the tidyverse!
it contains the library tidyr that provides the method drop_na which is very intuitive to read.
So you just do:
library(tidyverse)
dat %>% drop_na("B")
OR
dat %>% drop_na(B)
if B is a column name
Solution 2:[2]
try this:
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
Solution 3:[3]
This should work
dat <- dat[dat['B'].notnull()]
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Jake |
| Solution 2 | jyjek |
| Solution 3 | ah bon |
