【发布时间】:2017-10-18 19:06:14
【问题描述】:
我正在尝试使用lubridate、data.table 和dplyr 创建一个我必须每季度运行一次的 R 脚本。我正在尝试尽可能多地自动化它,以便我可能只需要更改目录即可运行它。基本上,我的问题是我需要从另一个数据集(数据集A)创建一个数据集。这个数据集看起来像
ID fromdate todate Quarters Cost Location
1: 29 2015-03-08 2015-03-25 2015Q1 13747.12 Orlando
2: 29 2015-04-08 2015-04-08 2015Q2 1555.08 Miami
3: 29 2015-07-08 2015-07-08 2015Q3 961.51 Miami
4: 29 2015-09-23 2015-09-24 2015Q3 3492.00 Orlando
5: 29 2015-09-24 2015-10-03 2015Q4 9948.56 Orlando
---
593: 174 2017-03-01 2017-03-31 2017Q1 2794.26 Orlando
594: 174 2017-04-05 2017-04-05 2017Q2 425.86 Miami
595: 174 2017-04-03 2017-04-28 2017Q2 2400.24 Orlando
596: 174 2017-05-01 2017-05-31 2017Q2 2805.46 Orlando
597: 174 2017-06-02 2017-06-30 2017Q2 2603.51 Orlando
IDs 之一的扩展是
ID fromdate todate Quarters CLM_PMT_AMT Location
1: 29 2015-03-08 2015-03-25 2015Q1 13747.12 Orlando
2: 29 2015-04-08 2015-04-08 2015Q2 1555.08 Miami
3: 29 2015-07-08 2015-07-08 2015Q3 961.51 Miami
4: 29 2015-09-23 2015-09-24 2015Q3 3492.00 Orlando
5: 29 2015-09-24 2015-10-03 2015Q4 9948.56 Orlando
6: 29 2015-10-03 2015-10-03 2015Q4 39.33 Orlando
7: 29 2015-10-05 2015-10-05 2015Q4 192.26 Miami
8: 29 2015-10-11 2015-10-14 2015Q4 9478.80 Orlando
9: 29 2015-10-15 2015-10-27 2015Q4 20655.46 Orlando
10: 29 2015-10-06 2015-10-31 2015Q4 1061.70 Orlando
11: 29 2015-11-03 2015-11-03 2015Q4 319.29 Orlando
12: 29 2015-11-05 2015-11-05 2015Q4 894.58 Miami
13: 29 2015-11-05 2015-11-28 2015Q4 21678.48 Orlando
14: 29 2015-12-06 2015-12-06 2015Q4 248.98 Miami
15: 29 2015-12-16 2015-12-25 2015Q4 9948.56 Orlando
16: 29 2015-12-01 2015-12-29 2015Q4 1417.91 Orlando
17: 29 2015-12-30 2016-01-01 2016Q1 9514.55 Orlando
18: 29 2016-01-05 2016-01-10 2016Q1 9682.28 Orlando
19: 29 2016-01-25 2016-01-27 2016Q1 6764.50 Orlando
20: 29 2016-01-03 2016-01-30 2016Q1 1564.87 Orlando
21: 29 2016-02-15 2016-02-17 2016Q1 3908.10 Orlando
22: 29 2016-02-02 2016-02-27 2016Q1 1886.87 Orlando
23: 29 2016-03-03 2016-03-03 2016Q1 76.58 Miami
24: 29 2016-03-03 2016-03-06 2016Q1 3213.78 Orlando
25: 29 2016-03-14 2016-03-23 2016Q1 4871.14 Orlando
我试图用这个数据集做的是按季度计算Cost 的总和和平均值,按滚动年份。例如,ID = 29 和Quarters = 2015Q4 将是从Quarters = 2015Q1 到Quarters = 2015Q4 的Cost 的总和和平均值,对于Quarters = 2016Q2,总和和平均值应该是从Quarters = 2015Q3 到Quarters = 2016Q2。这应该适用于每个ID、每个Location 和每个Quarter。我知道我可能不得不使用类似的东西
A %>%
group_by(ID, Quarters, Location) %>%
...
但我遇到的问题是,并非所有Quarters 都代表每个ID。关于如何做到这一点的任何建议?我已经束手无策了!
【问题讨论】:
-
使用
zoo::rollmean和zoo::rollsum。如果您在 R 标签中搜索“[r] rolling mean”,这里会有很多问题,stackoverflow.com/search?q=%5Br%5D+rolling+mean -
而您不想按季度分组,您想按 ID 和位置分组,您需要滚动季度。
标签: r dplyr data.table lubridate