通过在特定列中查找具有NA的条目来检索数据帧的子集

Chr*_*eno 4 r subset

假设我们有一个NA像这样的值的数据框,

>data
A  B  C  D
1  3  NA 4
2  1  3  4
NA 3  3  5
4  2  NA NA
2  NA 4  3
1  1  1  2
Run Code Online (Sandbox Code Playgroud)

我想知道一个通​​用的方法来检索data带有或的NA值的子集.所以输出应该是,CA

A  B  C  D
1  3  NA 4
NA 3  3  5
4  2  NA NA
Run Code Online (Sandbox Code Playgroud)

我尝试使用子命令subset(data, A==NA | C==NA),但它没有用.有任何想法吗?

Aru*_*run 12

这类事情的一个非常方便的功能是complete.cases.它按行检查NA,如果有则返回FALSE.如果没有NA,则返回TRUE.

所以,你需要子集只是你的数据的两列,然后用complete.cases(.)negate它和其子集的那些行从原始数据备份,如下所示:

# assuming your data is in 'df'
df[!complete.cases(df[, c("A", "C")]), ]
#    A B  C  D
# 1  1 3 NA  4
# 3 NA 3  3  5
# 4  4 2 NA NA
Run Code Online (Sandbox Code Playgroud)


Jd *_*aba 9

这是一种可能性:

# Read your data
data <- read.table(text="
A  B  C  D
1  3  NA 4
2  1  3  4
NA 3  3  5
4  2  NA NA
2  NA 4  3
1  1  1  2",header=T,sep="")

# Now subset your data 
subset(data, is.na(C) | is.na(A))
   A B  C  D
1  1 3 NA  4
3 NA 3  3  5
4  4 2 NA NA
Run Code Online (Sandbox Code Playgroud)