В пакете зоопарка rollmean
и 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
и rule=2
будут иметь то же значение в rollapply
и в approx
(из ядра R) для лучшего последовательность и простота использования. Скобки вокруг mean
в приведенном ниже примере в настоящее время требуются в версии для разработки, чтобы предотвратить вызов rollmean
, где 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")