为 df 中的列中的每个组添加“总计”行

May*_*aya 6 r dataframe

我有一个数据框,可以对列size进行分组。当数据框按大小排列时,我想将每个组的每列的总计显示为 df 中的一行。

library(dplyr)
dat <- data.frame(size = c("S", "XS", "L", "M", "L", "L", "XS"), 
           category = c("shirt", "shirt", "shirt", "shirt", "pants", "hat", "pants"),
           store1 = c(22, 3, 52, 10, 5, 37, 21),
           store2 = c(43, 13, 2, 24, 6, 12, 40))

dat %>%
  arrange(size) 

  size category store1 store2
1    L    shirt     52      2
2    L    pants      5      6
3    L      hat     37     12
4    M    shirt     10     24
5    S    shirt     22     43
6   XS    shirt      3     13
7   XS    pants     21     40
Run Code Online (Sandbox Code Playgroud)

我想要得到这样的东西

  size category store1 store2
1     L    shirt     52      2
2     L    pants      5      6
3     L      hat     37     12
4        Total L     94     20
5     M    shirt     10     24
6        Total M     10     24
7     S    shirt     22     43
8        Total S     22     43
9    XS    shirt      3     13
10   XS    pants     21     40
11      Total XS     24     53
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏!

Wim*_*pel 7

library( tidyverse )
library( janitor )

dat %>%
  dplyr::arrange( size ) %>%
  split( .[,"size"] ) %>%
  purrr::map_df(., janitor::adorn_totals)

#  size category store1 store2
#     L    shirt     52      2
#     L    pants      5      6
#     L      hat     37     12
# Total        -     94     20
#     M    shirt     10     24
# Total        -     10     24
#     S    shirt     22     43
# Total        -     22     43
#    XS    shirt      3     13
#    XS    pants     21     40
# Total        -     24     53
Run Code Online (Sandbox Code Playgroud)