我正在寻找一种快速的方法来对大型数据库执行滚动求和。我想要一个快速的函数,支持左对齐(和右对齐),并带有一个最小观测值参数。
本质上,即使样本大小小于指定宽度,我也想计算滚动总和。在下面的示例中,每当下一个5个值可用时,我想要下一个5个值的总和,并且如果前导值的大小小于5,则将滚动所有剩余部分的总和。
例如: x <- seq(1:10)
期望输出:
15 20 25 30 35 40 34 27 19 10
我知道rollapply(x,5,sum,align="left",partial=1)可以产生所需的输出,但是正在寻找更快的解决方案。
来自data.table包的frollsum速度很快,但似乎没有最小观测值参数。来自roll包的roll_sum也很快,并接受最小观测值的值,但不支持左对齐。
先行致谢。
本质上,即使样本大小小于指定宽度,我也想计算滚动总和。在下面的示例中,每当下一个5个值可用时,我想要下一个5个值的总和,并且如果前导值的大小小于5,则将滚动所有剩余部分的总和。
例如: x <- seq(1:10)
期望输出:
15 20 25 30 35 40 34 27 19 10
我知道rollapply(x,5,sum,align="left",partial=1)可以产生所需的输出,但是正在寻找更快的解决方案。
来自data.table包的frollsum速度很快,但似乎没有最小观测值参数。来自roll包的roll_sum也很快,并接受最小观测值的值,但不支持左对齐。
先行致谢。
RcppRoll::roll_sum
,我相信它很快,但是它的partial
还没有被定义。 - Ronak Shahfrollapply
函数文档说明可以使用adaptive
参数实现部分窗口。 - Edward