用 group_by 完成列并完成

Complete column with group_by and complete

我在使用 dplyr group_by 函数时遇到了一点问题。 这样做之后:

datasetALL %>% group_by(YEAR,Region) %>% summarise(count_number = n()) 

结果如下:

YEAR Region count_number
<int>  <int>        <int>
1   1946      1            2
2   1946      2            3
3   1946      3            1
4   1946      5            1
5   1947      3            1
6   1947      4            1

我想要这样的东西:

YEAR Region count_number
<int>  <int>        <int>
1   1946      1            2
2   1946      2            3
3   1946      3            1
4   1946      5            1
5   1946      4            0 #order is no important
6   1947      1            0
7   1947      2            0
8   1947      3            1
9   1947      4            1
10  1947      5            0

我尝试使用 tidyr 包中的 complete(),但没有成功...

使用 tidyr 包中的 complete 应该可以。您可以找到有关它的文档 here

可能发生的情况是您没有删除分组。然后 complete 尝试在每个组中添加 YEARRegion 的每个组合。但是所有这些组合都已经在分组中了。所以先去掉分组再做complete

datasetALL %>% 
    group_by(YEAR,Region) %>% 
    summarise(count_number = n()) %>%
    ungroup() %>%
    complete(Year, Region, fill = list(count_number = 1))

上面已经提到了,但是你可以通过使用tidyr和其中的参数nesting来完整解决这个问题:

complete(df, YEAR, nesting(Region), fill = list(count_number = 0))

    YEAR Region count_number
   <int>  <int>        <dbl>
 1  1946      1            2
 2  1946      2            3
 3  1946      3            1
 4  1946      4            0
 5  1946      5            1
 6  1947      1            0
 7  1947      2            0
 8  1947      3            1
 9  1947      4            1
10  1947      5            0