使用 rollmean 根据行位置填充尾随变量

Fill in trailing variables based on row position using rollmean

我想知道是否有办法调整 zoo 包中的 rollmean 函数处理尾随变量的方式(或者可能是另一个累积型滚动平均函数)。假设我有以下 data.frame:

df <- as.data.frame(as.matrix(sample(1:10), ncol = 3))
df$roll <- rollmean(df$V1, 5, fill = NA, align = "right")
df

   V1  roll
1   2   NA
2   7   NA
3   6   NA
4   1   NA
5   9  5.0
6   5  5.6
7  10  6.2
8   3  5.6
9   4  6.2
10  8  6.0

我知道我可以使用 fill = "extend"rollmean 之类的东西来获取所有尾随变量的平均值,但是有没有办法调整这种扩展方法,以便每个尾随变量都是累积的基于行位置?所以我想要的是类似于下面的 df,其中 df$roll 的第 4 行有 4 行滚动 window,第 3 行有 3 行滚动 window,依此类推。

   V1  roll
1   2   NA
2   7  4.5
3   6  5.0
4   1  4.0
5   9  5.0
6   5  5.6
7  10  6.2
8   3  5.6
9   4  6.2
10  8  6.0

有什么想法吗?

rollapply(和默认为右对齐的 rollapplyr)支持 partial = TRUE 参数。参见 ?rollapply

transform(df, roll = rollapplyr(V2, 5, mean, partial = TRUE))

给予:

   V1 V2 roll
1   1  2  2.0
2   2  7  4.5
3   3  6  5.0
4   4  1  4.0
5   5  9  5.0
6   6  5  5.6
7   7 10  6.2
8   8  3  5.6
9   9  4  6.2
10 10  8  6.0

注意: 要使生成输入的代码可重现,必须使用 set.seed(...)。由于还没有完成,我们使用了这个:

df <- structure(list(V1 = 1:10, V2 = c(2L, 7L, 6L, 1L, 9L, 5L, 10L, 
3L, 4L, 8L)), .Names = c("V1", "V2"), row.names = c(NA, -10L), class = "data.frame")