R - 如何根据某些变量中 NA 值的数量排除个案
R - How to exclude cases based on the number of NA values in certain variables
我有一个包含 22 个变量的数据框(我不能在此处 post,因为数据是机密的)。我需要删除所有在变量 4 到 22 中都具有 NA 的案例。因此,如果某个案例在变量 4 到 22 中至少有一个非 NA,我必须保留它。前三个变量中是否存在 NA 值无关紧要,但我还需要将这三个变量保留在我的数据框中。
我正在尝试这段代码:
df<-df[rowSums(is.na(df[,c(4:22)]))==19]
但是我收到一个错误:
Error in `[.data.frame`(df, rowSums(is.na(df[, c(4:22)])) == 19) :
undefined columns selected
有人对做什么有什么建议吗?谢谢!
您已经非常接近解决方案了。您可以在 4:22
列上尝试 colSums
。此外,包括 3 TRUE
以保持选中前 3 列。
df[c(rep(TRUE,3),colSums(is.na(df[4:22])) != nrow(df) )]
如果 OP 想要排除 rows
以及列 4:22 中的所有 NA
值,那么解决方案可能是:
df[rowSums(is.na(df[,c(4:22)])) != 19, ]
将上述解决方案应用于具有 8 列的数据框:
df[c(rep(TRUE,3),colSums(is.na(df[4:8])) != nrow(df) )]
# ID Status V1 V2 V3 V4 V5
# 1 1 0 1 0 0 0 1
# 2 1 0 1 0 0 0 1
# 3 1 1 1 1 1 1 1
# 4 2 0 2 0 0 0 2
# 5 2 1 2 1 1 1 2
# 6 2 NA 2 NA NA NA 2
# 7 3 0 3 0 0 0 3
# 8 3 1 3 1 1 1 3
# 9 3 NA 3 NA NA NA 3
# 10 3 NA 3 NA NA NA 3
样本data.frame
ID Status V1 V2 V3 V4 V5 V6
1 1 0 1 0 0 0 1 NA
2 1 0 1 0 0 0 1 NA
3 1 1 1 1 1 1 1 NA
4 2 0 2 0 0 0 2 NA
5 2 1 2 1 1 1 2 NA
6 2 NA 2 NA NA NA 2 NA
7 3 0 3 0 0 0 3 NA
8 3 1 3 1 1 1 3 NA
9 3 NA 3 NA NA NA 3 NA
10 3 NA 3 NA NA NA 3 NA
我有一个包含 22 个变量的数据框(我不能在此处 post,因为数据是机密的)。我需要删除所有在变量 4 到 22 中都具有 NA 的案例。因此,如果某个案例在变量 4 到 22 中至少有一个非 NA,我必须保留它。前三个变量中是否存在 NA 值无关紧要,但我还需要将这三个变量保留在我的数据框中。
我正在尝试这段代码:
df<-df[rowSums(is.na(df[,c(4:22)]))==19]
但是我收到一个错误:
Error in `[.data.frame`(df, rowSums(is.na(df[, c(4:22)])) == 19) :
undefined columns selected
有人对做什么有什么建议吗?谢谢!
您已经非常接近解决方案了。您可以在 4:22
列上尝试 colSums
。此外,包括 3 TRUE
以保持选中前 3 列。
df[c(rep(TRUE,3),colSums(is.na(df[4:22])) != nrow(df) )]
如果 OP 想要排除 rows
以及列 4:22 中的所有 NA
值,那么解决方案可能是:
df[rowSums(is.na(df[,c(4:22)])) != 19, ]
将上述解决方案应用于具有 8 列的数据框:
df[c(rep(TRUE,3),colSums(is.na(df[4:8])) != nrow(df) )]
# ID Status V1 V2 V3 V4 V5
# 1 1 0 1 0 0 0 1
# 2 1 0 1 0 0 0 1
# 3 1 1 1 1 1 1 1
# 4 2 0 2 0 0 0 2
# 5 2 1 2 1 1 1 2
# 6 2 NA 2 NA NA NA 2
# 7 3 0 3 0 0 0 3
# 8 3 1 3 1 1 1 3
# 9 3 NA 3 NA NA NA 3
# 10 3 NA 3 NA NA NA 3
样本data.frame
ID Status V1 V2 V3 V4 V5 V6
1 1 0 1 0 0 0 1 NA
2 1 0 1 0 0 0 1 NA
3 1 1 1 1 1 1 1 NA
4 2 0 2 0 0 0 2 NA
5 2 1 2 1 1 1 2 NA
6 2 NA 2 NA NA NA 2 NA
7 3 0 3 0 0 0 3 NA
8 3 1 3 1 1 1 3 NA
9 3 NA 3 NA NA NA 3 NA
10 3 NA 3 NA NA NA 3 NA