【发布时间】:2021-01-24 23:26:30
【问题描述】:
我需要使用不同宽度和移位的滚动窗口来汇总一些数据。特别是我需要对不同间隔记录的一些值应用一个函数(例如求和)。
这里是一个数据框的例子:
df <- tibble(days = c(0,1,2,3,1),
value = c(5,7,3,4,2))
df
# A tibble: 5 x 2
days value
<dbl> <dbl>
1 0 5
2 1 7
3 2 3
4 3 4
5 1 2
这些列表示:days 从上一次观察过去了多少天。第一个值为 0,因为之前没有观察到。value 我需要聚合的值。
现在,假设我需要每隔 4 天对字段 value 求和一次,时间为 1 天。
我需要这些方面的东西:
days value roll_sum rows_to_sum
0 5 15 1,2,3
1 7 10 2,3
2 3 3 3
3 4 6 4,5
1 2 NA NA
已添加列rows_to_sum 以使其清晰。
这里有更多细节:
- 第一个值 (15) 是 3 行的总和,因为 0+1+2 = 3 小于参考值 4 并且添加下一行(值为 3)将使总天数达到7 大于 4。
- 第二个值 (10) 是第 2 行和第 3 行的总和。这是因为,不包括第一行(因为我们正在移动一天),我们只对第 2 行和第 3 行求和,因为包括第 4 行会带来1+2+3 = 6 天的总和超过 4。
...
我怎样才能做到这一点? 谢谢
【问题讨论】:
标签: r window-functions rolling-computation