如何在 R 中按组获取计数(滚动总和)?

How to get tally (rolling sum) by group in R?

我想在我的数据集中创建一个名为“tally”的列,该列对每种类型和等级的计数求和。

type <- c("A","A","A","B","B","C")
rank <- c("low", "med", "high","med", "high", "low")
count <- c(9,20,31,2,4,14)

df <- data.frame(type, rank, count)

我想要的输出是:

type rank count tally
1    A  low     9     9
2    A  med    20    29
3    A high    31    60
4    B  med     2     2
5    B high     4     6
6    C  low    14    14 

我想另一种描述它的方式是滚动总和(它考虑了从低到高的顺序)?我环顾四周,但找不到任何好的功能来做到这一点。理想情况下,我可以有一个 for 循环,它允许我按类型获得这个“滚动总和”。

按'type'分组后我们可以使用cumsum

library(dplyr)
df <- df %>%
   group_by(type) %>%
    mutate(tally = cumsum(count)) %>%
    ungroup

-输出

# A tibble: 6 x 4
  type  rank  count tally
  <chr> <chr> <dbl> <dbl>
1 A     low       9     9
2 A     med      20    29
3 A     high     31    60
4 B     med       2     2
5 B     high      4     6
6 C     low      14    14