如何在dplyr中对变量进行去累积?

时间:2017-07-27 07:08:01

标签: r dplyr

我有一个问题。我有一组季度个人数据,这是“每年累积”,即。第一季度的价值是第一季度,第二季度的价值是第一季度和第二季度的总和,第三季度的价值是前三季度的总和,第四季度是年度总和。如何轻松地对dplyr中的那些进行分解,按ID和年份进行分组?

1 个答案:

答案 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

希望这有帮助!