动物园包里rollmean
and rollapply
有允许多种变化的论点。
library(zoo)
x <- seq(10)^2
# no NAs at end
rollmean(x, 3)
# NAs at ends
rollmean(x, 3, na.pad = TRUE)
# weighted mean
rollapply(zoo(x), 3, function(x) c(1, 2, 1) %*% x / 4)
# at ends take means of less than 3 points - needs devel version
# partial= is in development and at this point must use na.rm = TRUE to use partial
source("http://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/zoo/R/rollapply.R?revision=802&root=zoo")
rollapply(zoo(x), 3, mean, partial = TRUE, na.rm = TRUE)
EDIT:
请注意,自从编写此内容以来,动物园的开发版本已更改,因此不再是编写partial = TRUE
一个人写规则=“部分”或rule = 3
。问题是,随着新的最终规则被添加到开发版本中(现在有 3 个,在发布之前将添加第 4 个),每个规则都有一个单独的参数,这会使用户界面变得混乱。还rule
更符合approx
在R的核心。事实上,rule=1
and rule=2
将具有相同的含义rollapply
and in approx
(来自 R 的核心)以获得更好的一致性和易用性。周围的括号mean
下面的示例中目前在开发版本中需要防止它调用rollmean
, where rule="partial"
尚未实施,但在正式发布时将消除这样做的需要。
source("http://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/zoo/R/rollapply.R?revision=815&root=zoo")
rollapply(zoo(x), 3, (mean), rule = "partial")