用 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 尝试在每个组中添加 YEAR
和 Region
的每个组合。但是所有这些组合都已经在分组中了。所以先去掉分组再做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
我在使用 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 尝试在每个组中添加 YEAR
和 Region
的每个组合。但是所有这些组合都已经在分组中了。所以先去掉分组再做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