如何在 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
我想在我的数据集中创建一个名为“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