web-dev-qa-db-ja.com

特定の列に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が列Bにある行だけでなく、NAを持つすべての行を削除します。

また、2つの列のNA値についてこれを行う方法を知りたいです。

すべてのアドバイスに感謝します!

6
user9259005

最も簡単な解決策は、is.na()を使用することです。

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

あなたに与えます:

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

tidyverse!を使用する場合、エレガントなソリューションがあります!

これには、drop_naメソッドを提供するライブラリtidyrが含まれており、非常に直感的に読み取ることができます。

だからあなたはただ:

library(tidyverse)

dat %>% drop_na("B")
3
Agile Bean

これを試して:

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
1
jyjek