【发布时间】:2017-03-24 07:32:10
【问题描述】:
我拥有集团-国家-品牌级别的长格式年度时间序列数据。我想应用一个函数来计算每个级别的同比增长率。p>
基本上是(当前值/先前值)-1
在下面找到数据的摘录:
Grp Sta Brnd Yr Sls
A AL Ben's 2012 29770
A AL Ben's 2013 23357
A AL Ben's 2014 22442
A AL Ben's 2015 21848
A AL Ben's 2016 13799
B CA Scott's 2012 1079
B CA Scott's 2013 11178
B CA Scott's 2014 14778
B CA Scott's 2015 15241
B CA Scott's 2016 10569
C TX Joey's 2012 1673
C TX Joey's 2013 1290
C TX Joey's 2014 899
C TX Joey's 2015 732
C TX Joey's 2016 294
基本上,grp-state-brand 的每个唯一级别是 5 行。
Grp Sta Brnd Yr Sls Grwth
A AL Ben's 2012 29770
A AL Ben's 2013 23357 -22%
A AL Ben's 2014 22442 -4%
A AL Ben's 2015 21848 -3%
A AL Ben's 2016 13799 -37%
B CA Scott's 2012 1079
B CA Scott's 2013 11178 936%
B CA Scott's 2014 14778 32%
B CA Scott's 2015 15241 3%
B CA Scott's 2016 10569 -23%
C TX Joey's 2012 1673
C TX Joey's 2013 1290 -23%
C TX Joey's 2014 899 -30%
C TX Joey's 2015 732 -19%
C TX Joey's 2016 294 -60%
【问题讨论】:
-
还有一个
data.table()解决方案:dt[, Grwth := (round(Sls/shift(Sls, type = 'lag'), 2)*100)-100, by = c('Grp', 'Brnd')]。
标签: r time-series percentage data-manipulation