r - 使用 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
...
任何帮助是极大的赞赏。
解决方案
arrange
数据由city
anddate
和 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))
推荐阅读
- javascript - 如何上传二进制 blob
- entity-framework - 没有抽象基类的 EFCore 2.2 TPT
- android - 多次数据库更新操作后,分页列表向下滚动到某个页面
- python-3.x - 如何使用python添加打开的天气图的天气图1.0?
- multithreading - 在循环中使用 boost::promise 和 boost::future
- javascript - 在画布 html/css 旁边放置按钮
- r - 如何使用公式中其他列的单个值计算新列?
- reactjs - Visual Studio (2017 & 2019) 忽略 TypeScriptCompileBlocked
- javascript - file_get_contents 在 Laravel 应用程序中返回“文件名不能为空”
- reactjs - 如何在反应中将检查保存到可为空的对象