假设我们有一个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)
这是一种可能性:
# 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)