En el paquete zoológico rollmean
rollapply
y tienen argumentos que permiten numerosas variaciones.
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:
Tenga en cuenta que ya que este fue escrito la versión de desarrollo del zoológico se cambió para que en vez de escribir partial = TRUE
uno escribe regla = "parcial" o rule = 3
. El problema era que a medida que se agregaban nuevas reglas de finalización a la versión de desarrollo (ahora hay 3 y se agregará una cuarta antes de su lanzamiento), tener un argumento separado para cada una satura la interfaz de usuario. También rule
es más consistente con approx
en el núcleo de R. De hecho, rule=1
y rule=2
tendrá el mismo significado en rollapply
y en approx
(desde el núcleo de R) para una mejor consistencia y facilidad de uso. Los paréntesis alrededor de mean
en el ejemplo siguiente se requieren actualmente en la versión de desarrollo para evitar que llame al rollmean
, donde rule="partial"
aún no se ha implementado, pero la necesidad de hacerlo se eliminará cuando se lance oficialmente.
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")
¿Pero por qué la salida de rollmean es siempre un elemento más corto que la salida? – rsk82