【问题标题】:group by and then count missing variables?分组然后计算缺失的变量?
【发布时间】:2016-02-12 13:46:44
【问题描述】:

我的数据如下所示:

df1 <- data.frame(
  Z = sample(LETTERS[1:5], size = 10000, replace = T),
  X1 = sample(c(1:10,NA), 10000, replace = T),
  X2 = sample(c(1:25,NA), 10000, replace = T),
  X3 = sample(c(1:5,NA), 10000, replace = T)
)

我可以用以下方法计算缺失的变量:

data.frame("Total Missing" = colSums(is.na(df1))) 

但是,我想通过Z 来做这个。即Z每个值的缺失X1-3个数。

我试过了

df1 %>% group_by(Z) %>% summarise('Total Missing' = colSums(is.na(df1)))

但它并没有像我预期的那样工作。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你可以使用summarise_each:

    df1 %>% 
      group_by(Z) %>% 
      summarise_each(funs(sum(is.na(.))))
    #Source: local data frame [5 x 4]
    #
    #       Z    X1    X2    X3
    #  (fctr) (int) (int) (int)
    #1      A   169    77   334
    #2      B   170    77   316
    #3      C   159    78   348
    #4      D   181    79   326
    #5      E   174    69   341
    

    请注意,您可以在summarise_each 中指定将函数应用于哪些列(默认是除分组列之外的所有列)或函数应该应用于哪些列。您可能还需要注意,就像 summarise_eachsummarise,如果您想在不汇总结果的情况下将函数应用于所有列,还有 mutate_each 作为 mutate 的补充。

    强制性 data.table 等效项是:

    library(data.table)
    setDT(df1)[, lapply(.SD, function(x) sum(is.na(x))), by = Z]
    #   Z  X1 X2  X3
    #1: D 181 79 326
    #2: C 159 78 348
    #3: B 170 77 316
    #4: A 169 77 334
    #5: E 174 69 341
    

    在基础 R 中,您可以使用如下拆分/应用/组合方法:

    do.call(rbind,
            lapply(
              split(df1, df1$Z), function(dd) {
                colSums(is.na(dd[-1]))
              }))
    #   X1 X2  X3
    #A 169 77 334
    #B 170 77 316
    #C 159 78 348
    #D 181 79 326
    #E 174 69 341
    

    或者,同样在基础 R 中,您可以使用 aggregate

    aggregate(df1[-1], list(df1$Z), FUN = function(y) sum(is.na(y))) 
    aggregate(. ~ Z, df1, FUN = function(y) sum(is.na(y)), na.action = "na.pass") # formula interface
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多