代码之家  ›  专栏  ›  技术社区  ›  elcortegano

总结所有因素组合的观察数据

  •  1
  • elcortegano  · 技术社区  · 5 年前

    有时,最好有一个完整的数据框架,其中包含对所有分组因子组合的观察结果,即使原始数据中没有这些数据(即,用NA数据填补这些空白)。

    mtcars :

    mtcars %>% group_by(cyl, gear) %>% dplyr::summarise(N = n())
    # A tibble: 8 x 3
    # Groups:   cyl [3]
        cyl  gear     N
      <dbl> <dbl> <int>
    1     4     3     1
    2     4     4     8
    3     4     5     2
    4     6     3     2
    5     6     4     4
    6     6     5     1
    7     8     3    12
    8     8     5     2
    

    按分组时 cyl gear ,缺少观察 cyl=8 gear=4

    # A tibble: 9 x 3
    # Groups:   cyl [3]
        cyl  gear     N
      <dbl> <dbl> <int>
    1     4     3     1
    2     4     4     8
    3     4     5     2
    4     6     3     2
    5     6     4     4
    6     6     5     1
    7     8     3    12
    8     8     4    NA
    9     8     5     2
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   akrun    5 年前

    我们可以利用 complete ungroup

    library(dplyr)
    library(tidyr)
    mtcars %>% 
        group_by(cyl, gear) %>%
        dplyr::summarise(N = n()) %>%
        ungroup %>%
        complete(cyl, gear)
    # A tibble: 9 x 3
    #    cyl  gear     N
    #  <dbl> <dbl> <int>
    #1     4     3     1
    #2     4     4     8
    #3     4     5     2
    #4     6     3     2
    #5     6     4     4
    #6     6     5     1
    #7     8     3    12
    #8     8     4    NA
    #9     8     5     2
    

    或者另一个选项是创建一个具有列的唯一元素的组合数据集,然后执行 left_join (没有前一个简单)

    crossing(cyl = unique(mtcars$cyl), gear = unique(mtcars$gear)) %>% 
        left_join(mtcars %>% 
                      group_by(cyl, gear) %>%
                      dplyr::summarise(N = n()))
    
    推荐文章