我想知道是否有办法调整rollmean
包中的zoo
函数如何处理尾随变量(或者可能是另一个累积类型的滚动均值函数)。假设我有以下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行滚动窗口,第3行有3行滚动窗口,依此类推。
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
有什么想法吗?
答案 0 :(得分:2)
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")