我有一个数据框sells
,我想检查行和列中缺少的数据
sells[, complete.cases(sells)]
nrows(sells[, complete.cases(sells)])
但我不知道如果列
要解决谁请帮助
答案 0 :(得分:1)
首先让我们取iris
数据帧并随机插入一些NA:
iris.demo <- iris
iris.nas <- matrix(as.logical(sample(FALSE:TRUE, size = 150*5,
prob = c(.9,.1),replace = TRUE)),ncol = 5)
iris.demo[iris.nas] <- NA
对于行,它非常简单:
sum(complete.cases(iris.demo))
# [1] 75
对于列,有两种可能性(在几种可能的其他可能性中):
转置整个数据框
sum(complete.cases(t(iris.demo)))
# [1] 0 # 0 columns are complete
使用lapply
计算每列上的“不丢失”并查看它是否等于nrow
:
sum(lapply(iris.demo, function(x) sum(!is.na(x))) == nrow(iris.demo))
# [1] 0
答案 1 :(得分:0)
你可以这样做:
set.seed(1)
(sells <- data.frame(replicate(2, sample(c(1:3, NA), 10, T)), x3 = 1:10))
# X1 X2 x3
# 1 NA 2 1
# 2 1 3 2
# 3 3 2 3
# 4 1 1 4
# 5 2 NA 5
# 6 2 3 6
# 7 1 NA 7
# 8 2 1 8
# 9 NA 3 9
# 10 2 2 10
行:
sells[complete.cases(sells), ]
# X1 X2 x3
# 1 2 1 1
# 2 2 1 2
# 3 3 3 3
# 9 3 2 9
nrow(sells[complete.cases(sells), ])
# [1] 6
专栏:
sells[, sapply(sells, function(col) any(is.na(col)))]
# X1 X2
# 1 2 1
# 2 2 1
# 3 3 3
# 4 NA 2
# 5 1 NA
# 6 NA 2
# 7 NA 3
# 8 3 NA
# 9 3 2
# 10 1 NA
sum(sapply(sells, function(col) any(is.na(col))))
# [1] 2