从R中的设置起始行包装累积和

时间:2017-02-24 05:25:43

标签: r dataframe data.table

我的数据框看起来有点像这样:

wt <- data.frame(region = c(rep("A", 5), rep("B", 5)), time = c(1:5, 1:5), 
                 start = c(rep(2,5), rep(4, 5)), value = rep(1, 10))

value列中的值可以是任何数字(我在一个非常大的数据集中工作),但每个区域将超过相等长度的时间序列并且只有一个起始点。

我想在每个区域内执行累积总和,这些累积在开始点处开始累积,在时间序列中继续前进,并且在时间序列中的起始点之前包裹到行。

完整的数据表,包含预期的结果,如下所示:

region    time     start    value    result
A         1        2        1        5
A         2        2        1        1
A         3        2        1        2
A         4        2        1        3
A         5        2        1        4
B         1        4        1        3
B         2        4        1        4
B         3        4        1        5
B         4        4        1        1
B         5        4        1        2

时间列后跟cumsum的简单转换不起作用,因为该函数关心的是行顺序,而不是任何特定因素。

考虑到这一点,我在一个巨大的数据表上运行,运行时绝对是一个问题,所以任何解决方案 必须 避免重新排序行。

如何做到这一点的想法?提前谢谢。

编辑:考虑时间是一个周期,例如一天中的小时数 - 例如,如果开始时间是2,则表示观察从时间2的一个实例开始,到下一个时间结束1.

0 个答案:

没有答案