Rolling Means/Maximums/Medians/Sums
rollmean.RdGeneric functions for computing rolling means, maximums, medians, and sums of ordered observations.
Usage
rollmean(x, k, fill = if (na.pad) NA, na.pad = FALSE,
align = c("center", "left", "right"), ...)
rollmax(x, k, fill = if (na.pad) NA, na.pad = FALSE,
align = c("center", "left", "right"), ...)
rollmedian(x, k, fill = if (na.pad) NA, na.pad = FALSE,
align = c("center", "left", "right"), ...)
rollsum(x, k, fill = if (na.pad) NA, na.pad = FALSE,
align = c("center", "left", "right"), ...)
rollmeanr(..., align = "right")
rollmaxr(..., align = "right")
rollmedianr(..., align = "right")
rollsumr(..., align = "right")Arguments
- x
an object (representing a series of observations).
- k
integer width of the rolling window. Must be odd for
rollmedian.- fill
a three-component vector or list (recycled otherwise) providing filling values at the left/within/to the right of the data range. See the
fillargument ofna.fillfor details.- na.pad
deprecated. Use
fill = NAinstead ofna.pad = TRUE.- align
character specifying whether the index of the result should be left- or right-aligned or centered (default) compared to the rolling window of observations.
- ...
Further arguments passed to methods.
Details
These functions compute rolling means, maximums, medians, and sums respectively
and are thus similar to rollapply but are
optimized for speed.
Currently, there are methods for "zoo" and "ts" series and
default methods. The default method of rollmedian
is an interface to runmed.
The default methods of rollmean and rollsum do not handle inputs that contain
NAs. In such cases, use rollapply instead.
If x is of length 0, x is returned unmodified.
Examples
suppressWarnings(RNGversion("3.5.0"))
set.seed(1)
x.Date <- as.Date(paste(2004, rep(1:4, 4:1), sample(1:28, 10), sep = "-"))
x <- zoo(rnorm(12), x.Date)
## rolling operations for univariate series
rollmean(x, 3)
#> 2004-01-11 2004-01-15 2004-01-23 2004-02-05 2004-02-21 2004-02-25 2004-03-13
#> 0.1350951 0.6005117 0.3362392 0.5940580 0.5320787 -0.1043585 -0.8153657
#> 2004-03-14
#> -0.5703365
rollmax(x, 3)
#> 2004-01-11 2004-01-15 2004-01-23 2004-02-05 2004-02-21 2004-02-25 2004-03-13
#> 0.7383247 0.7383247 0.7383247 1.5117812 1.5117812 1.5117812 0.3898432
#> 2004-03-14
#> 1.1249309
rollmedian(x, 3)
#> 2004-01-11 2004-01-15 2004-01-23 2004-02-05 2004-02-21 2004-02-25 2004-03-13
#> 0.4874291 0.5757814 0.5757814 0.5757814 0.3898432 0.3898432 -0.6212406
#> 2004-03-14
#> -0.6212406
rollsum(x, 3)
#> 2004-01-11 2004-01-15 2004-01-23 2004-02-05 2004-02-21 2004-02-25 2004-03-13
#> 0.4052854 1.8015351 1.0087177 1.7821741 1.5962360 -0.3130755 -2.4460972
#> 2004-03-14
#> -1.7110095
## rolling operations for multivariate series
xm <- zoo(matrix(1:12, 4, 3), x.Date[1:4])
rollmean(xm, 3)
#>
#> 2004-01-11 2 6 10
#> 2004-01-15 3 7 11
rollmax(xm, 3)
#>
#> 2004-01-11 3 7 11
#> 2004-01-15 4 8 12
rollmedian(xm, 3)
#>
#> 2004-01-11 2 6 10
#> 2004-01-15 3 7 11
rollsum(xm, 3)
#>
#> 2004-01-11 6 18 30
#> 2004-01-15 9 21 33
## rollapply vs. dedicated rollmean
rollapply(xm, 3, mean) # uses rollmean
#>
#> 2004-01-11 2 6 10
#> 2004-01-15 3 7 11
rollapply(xm, 3, function(x) mean(x)) # does not use rollmean
#>
#> 2004-01-11 2 6 10
#> 2004-01-15 3 7 11