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

R语言检查缺少列和行的数据,r,R,我有一个数据框,我想检查行和列中缺少的数据 我对行所做的是: 但我不知道该解决谁的专栏 请帮助首先,让我们使用虹膜数据框,随机插入一些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:

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(t(iris.demo)))
    # [1] 0   # 0 columns are complete
    
  • 使用
    lappy
    计算每列上的“未缺失”数,看看它是否等于
    nrow

    sum(lapply(iris.demo, function(x) sum(!is.na(x))) == nrow(iris.demo))
    # [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[, 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
    
    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