使用 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")
我想知道是否有办法调整 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")