以下是df示例:
tt <- as.Date("2000-01-01") + c(1, 2, 5, 6, 7, 8, 10)
z <- zoo(seq_along(tt), tt)
## - fill it out to a daily series, zm, using NAs
## using a zero width zoo series g on a grid
g <- zoo(, seq(start(z), end(z), "day"))
zm <- merge(z, g)
现在,如果你这样做:
rollapply(zm, 5, mean, na.rm = TRUE, fill = NA, align = 'right')
这在开始时为您提供4个NA。我想做的是当窗口小于5时使用较小的窗口。所以当数据是:
2000-01-02 2000-01-03 2000-01-04 2000-01-05 2000-01-06 2000-01-07 2000-01-08 2000-01-09 2000-01-10 2000-01-11
1 2 NA NA 3 4 5 6 NA 7
然后结果将是:
2000-01-02 2000-01-03 2000-01-04 2000-01-05 2000-01-06 2000-01-07 2000-01-08 2000-01-09 2000-01-10 2000-01-11
1 1.5 1.5 1.5 2 3 4 4.5 4.5 5.5
答案 0 :(得分:2)
rollapply(zm, 5, mean, na.rm = TRUE, fill = NA, align = 'right', partial = TRUE)
> rollapply(zm, 5, mean, na.rm = TRUE, fill = NA, align = 'right', partial = TRUE)
2000-01-02 2000-01-03 2000-01-04 2000-01-05 2000-01-06 2000-01-07 2000-01-08 2000-01-09 2000-01-10 2000-01-11
1.0 1.5 1.5 1.5 2.0 3.0 4.0 4.5 4.5 5.5
来自help("rollapply")
,在partial
参数的文档中:
部分
逻辑或数字。如果为FALSE(默认值),则仅在应用FUN时应用 滚动窗口的所有索引都在观察的时间范围内。 如果为TRUE,则传递范围内的索引子集 FUN。 partial的数字参数可用于确定最小值 部分计算的窗口大小。