rollapply:修复每次滑动的起始观察 window?
rollapply: fix the starting observation in each sliding window?
简单的动物园对象是
z <- zoo(11:15, as.Date(31:45))
as.data.frame(z)
z
1970-02-01 11
1970-02-02 12
1970-02-03 13
1970-02-04 14
1970-02-05 15
1970-02-06 11
1970-02-07 12
1970-02-08 13
1970-02-09 14
1970-02-10 15
1970-02-11 11
1970-02-12 12
1970-02-13 13
1970-02-14 14
1970-02-15 15
as.data.frame(rollapply(z, width=3, mean, align="right"))
rollapply(z, width = 3, mean, align = "right")
1970-02-03 12.00000
1970-02-04 13.00000
1970-02-05 14.00000
1970-02-06 13.33333
1970-02-07 12.66667
1970-02-08 12.00000
1970-02-09 13.00000
1970-02-10 14.00000
1970-02-11 13.33333
1970-02-12 12.66667
1970-02-13 12.00000
1970-02-14 13.00000
1970-02-15 14.00000
是否有可能使开始观察是固定的,即在日期“1970-02-04”我们的平均值超过“11、12、13、14”而不是“12、13、14”等等在?当然可以通过循环来完成,但是如果问题有点复杂,循环会非常慢,我正在寻找与 apply
或 rollapply
.[=14= 一样快的东西]
设置宽度等于系列的长度并使用partial = TRUE
:
rollapplyr(z, length(z), mean, partial = TRUE)
您也可以使用 cumsum(z) / seq_along(z)
简单的动物园对象是
z <- zoo(11:15, as.Date(31:45))
as.data.frame(z)
z
1970-02-01 11
1970-02-02 12
1970-02-03 13
1970-02-04 14
1970-02-05 15
1970-02-06 11
1970-02-07 12
1970-02-08 13
1970-02-09 14
1970-02-10 15
1970-02-11 11
1970-02-12 12
1970-02-13 13
1970-02-14 14
1970-02-15 15
as.data.frame(rollapply(z, width=3, mean, align="right"))
rollapply(z, width = 3, mean, align = "right")
1970-02-03 12.00000
1970-02-04 13.00000
1970-02-05 14.00000
1970-02-06 13.33333
1970-02-07 12.66667
1970-02-08 12.00000
1970-02-09 13.00000
1970-02-10 14.00000
1970-02-11 13.33333
1970-02-12 12.66667
1970-02-13 12.00000
1970-02-14 13.00000
1970-02-15 14.00000
是否有可能使开始观察是固定的,即在日期“1970-02-04”我们的平均值超过“11、12、13、14”而不是“12、13、14”等等在?当然可以通过循环来完成,但是如果问题有点复杂,循环会非常慢,我正在寻找与 apply
或 rollapply
.[=14= 一样快的东西]
设置宽度等于系列的长度并使用partial = TRUE
:
rollapplyr(z, length(z), mean, partial = TRUE)
您也可以使用 cumsum(z) / seq_along(z)