我有一个问题。我有一组季度个人数据,这是“每年累积”,即。第一季度的价值是第一季度,第二季度的价值是第一季度和第二季度的总和,第三季度的价值是前三季度的总和,第四季度是年度总和。如何轻松地对dplyr中的那些进行分解,按ID和年份进行分组?
答案 0 :(得分:2)
假设我们有两年,第一年的销售额是每季度2个,第二年的销售额是每季度3个,原来是:
df = data.frame(quarter = c("Q1","Q2","Q3","Q4","Q1","Q2","Q3","Q4"), year=c(rep(2017,4),rep(2018,4)), cum_tot= c(2,4,6,8,3,6,9,12))
quarter year cum_tot
1 Q1 2017 2
2 Q2 2017 4
3 Q3 2017 6
4 Q4 2017 8
5 Q1 2018 3
6 Q2 2018 6
7 Q3 2018 9
8 Q4 2018 12
然后我们可以将每季度的销售额计算为:
library(dplyr)
df %>% group_by(year) %>% mutate(original = c(cum_tot[1], diff(cum_tot)))
或者,根据GGamba的评论如下:
df %>% group_by(year) %>% mutate(original = cum_tot - lag(cum_tot, default = 0))
他们都导致:
quarter year cum_tot original
1 Q1 2017 2 2
2 Q2 2017 4 2
3 Q3 2017 6 2
4 Q4 2017 8 2
5 Q1 2018 3 3
6 Q2 2018 6 3
7 Q3 2018 9 3
8 Q4 2018 12 3
希望这有帮助!