【发布时间】:2021-08-23 08:21:04
【问题描述】:
我想在与group_by 一起使用的summarise 的输出中附加总计行。
Data <-
structure(list(CT = c("1", "1", "1", "1", "1", "1", "1", "1",
"1", "1", "1", "1", "2", "2", "2", "2", "2", "2", "2", "2", "2",
"2"), SCT = c("1", "1", "1", "1", "1", "1", "2", "2", "2", "2",
"2", "2", "1", "1", "1", "1", "2", "2", "2", "2", "2", "2"),
SSCT = c("1", "2", "3", "1", "2", "3", "1", "2", "1", "2",
"1", "2", "1", "2", "1", "2", "1", "2", "3", "1", "2", "3"
), Category = c(111L, 112L, 113L, 111L, 112L, 113L, 121L,
122L, 121L, 122L, 121L, 122L, 211L, 212L, 211L, 212L, 221L,
222L, 223L, 221L, 222L, 223L), Y = c(10L, 12L, 15L, 11L,
10L, 13L, 21L, 22L, 20L, 25L, 23L, 24L, 31L, 33L, 36L, 39L,
32L, 31L, 36L, 41L, 44L, 45L)), row.names = c(NA, -22L), class = "data.frame")
head(Data)
CT SCT SSCT Category Y
1 1 1 1 111 10
2 1 1 2 112 12
3 1 1 3 113 15
4 1 1 1 111 11
5 1 1 2 112 10
6 1 1 3 113 13
这里
CT:类别,SCT:子类别,SSCT:子子类别
Data %>%
group_by(CT) %>%
summarise(Total = sum(Y))
# A tibble: 2 x 2
CT Total
<chr> <int>
1 1 206
2 2 368
Data %>%
group_by(CT, SCT) %>%
summarise(Total = sum(Y))
# A tibble: 4 x 3
# Groups: CT [2]
CT SCT Total
<chr> <chr> <int>
1 1 1 71
2 1 2 135
3 2 1 139
4 2 2 229
Data %>%
group_by(CT, SCT, SSCT) %>%
summarise(Total = sum(Y))
# A tibble: 10 x 4
# Groups: CT, SCT [4]
CT SCT SSCT Total
<chr> <chr> <chr> <int>
1 1 1 1 21
2 1 1 2 22
3 1 1 3 28
4 1 2 1 64
5 1 2 2 71
6 2 1 1 67
7 2 1 2 72
8 2 2 1 73
9 2 2 2 75
10 2 2 3 81
所需输出
需要输出以下内容:
CT SCT SSCT Total
Total 206
Total 71
1 1 1 21
1 1 2 22
1 1 3 28
Total 135
1 2 1 64
1 2 2 71
Total 368
Total 139
2 1 1 67
2 1 2 72
Total 229
2 2 1 73
2 2 2 75
2 2 3 81
【问题讨论】:
-
查看this vignette 以获得像数据透视表一样的 excel
-
感谢@AnilGoyal 指向一个非常方便的 R 包。
-
与this question 相同,只是没有专门要求 tidyverse 解决方案
标签: r dplyr tidyverse summarize