Я ищу быстрый способ реализации скользящей суммы в большой базе данных. Мне нужна быстрая функция, которая поддерживает как левое (и правое) выравнивание, так и аргумент для минимального наблюдения.
По сути, я хочу вычислить скользящую сумму, даже если размер выборки меньше указанной ширины. В приведенном ниже примере я хочу получить сумму следующих 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)
обеспечивает требуемый вывод, но ищу более быстрое решение.
frollsum
из пакета data.table работает быстро, но, похоже, не имеет аргумента для минимального наблюдения. roll_sum
из рулона пакетов также быстр и принимает значение для минимального наблюдения, но не поддерживает выравнивание по левому краю.
Заранее спасибо.