Я рад, что меня исправили, но в этом случае я думаю, что вам нужно использовать rollapply()
, чтобы воспользоваться аргументом width
, который, по-видимому, недоступен в указанных c вспомогательных функциях. Ширина, переданная в виде списка, рассматривается как смещение, поэтому вы можете сделать:
library(zoo)
library(dplyr)
dat %>%
mutate(value_rollmean = rollapply(value, width = list(-(2:1)), mean, fill = NA))
date value value_rollmean
1 2015-01-01 1 NA
2 2015-02-01 2 NA
3 2015-03-01 3 1.5
4 2015-04-01 4 2.5
5 2015-05-01 5 3.5
6 2015-06-01 6 4.5
7 2015-07-01 7 5.5
8 2015-08-01 8 6.5
9 2015-09-01 9 7.5
10 2015-10-01 10 8.5
11 2015-11-01 11 9.5
12 2015-12-01 12 10.5
Данные:
dat <- data.frame(
date = as.Date(c("2015-01-01", "2015-02-01", "2015-03-01", "2015-04-01", "2015-05-01", "2015-06-01", "2015-07-01", "2015-08-01", "2015-09-01", "2015-10-01", "2015-11-01", "2015-12-01"))
, value = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
)