rollapply意味着当不适合时填充为较小的窗口

时间:2018-01-19 17:41:20

标签: r rollapply

以下是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

1 个答案:

答案 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的数字参数可用于确定最小值   部分计算的窗口大小。