R语言检查列和行的缺失数据

时间:2015-04-06 12:44:11

标签: r

我有一个数据框sells,我想检查行和列中缺少的数据

我为行做的是:

sells[, complete.cases(sells)]

nrows(sells[, complete.cases(sells)])

但我不知道如果列

要解决谁

请帮助

2 个答案:

答案 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

对于列,有两种可能性(在几种可能的其他可能性中):

  1. 转置整个数据框

    sum(complete.cases(t(iris.demo)))
    # [1] 0   # 0 columns are complete
    
  2. 使用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