首页 > 解决方案 > 使用 dplyr 的每月同比增长率

问题描述

我的目标是实现同比增长。我尝试了 group by、arrange 和 mutate 函数,但是 Year-over-Year Growth 列没有产生正确的结果(这就是为什么我试图获得一个我有交替年份的数据集)。

Data:

date         store  city   measurement
2010-01-01   a      LA     150
2010-01-10   b      NY     160
2010-01-20   c      SE     10
...
# There is no 2011-01-01
#2011-01-01   a     LA     900
2011-01-10   b      NY     170
2011-01-20   c      SE     20
...
2012-01-01   a      LA     900
2012-01-10   b      NY     170
2012-01-20   c      SE     20
What I am trying to get:

date         store  city   measurement   YOY
2010-01-01   a      LA     150           ?
2011-01-01   a      LA     900           0
2012-01-01   a      LA     900                    
2010-01-10   b      NY     160           0.0625          
2011-01-10   b      NY     170           0
2012-01-10   b      NY     170    
2010-01-20   c      SE     10            1
2011-01-20   c      SE     20            0         
2012-01-10   b      NY     20 
2010
2011
2012
...

任何帮助是极大的赞赏。

标签: rdplyrtidyverse

解决方案


arrange数据由cityanddate和 for eachcity通过YOY减去前一个值measurement与当前值除以前一个值来计算。

library(dplyr)

result <- df %>%
            mutate(date = as.Date(date)) %>%
            arrange(city, date) %>%
            group_by(city) %>%
            mutate(YearoverYear=(measurement-lag(measurement))/lag(measurement))

推荐阅读