# rollapply

##### Apply Rolling Functions

A generic function for applying a function to rolling margins of an array.

##### Usage

```
rollapply(data, width, FUN, ..., by = 1, ascending = TRUE, by.column = TRUE,
na.pad = FALSE, align = c("center", "left", "right"))
```

##### Arguments

- data
- the data to be used (representing a series of observations).
- width
- number of points per group.
- FUN
- the function to be applied.
In the case of functions like
`+`

,`%*%`

, etc., the function name must be quoted. - ...
- optional arguments to
`FUN`

. - by
- calculate FUN for trailing width points at every by-th time point.
- ascending
- logical. If TRUE then points are passed to
`FUN`

in ascending order of time; otherwise, they are passed in descending order. - by.column
- logical. If
`TRUE`

,`FUN`

is applied to each column separately. - na.pad
- logical. If
`TRUE`

then additional elements or rows of`NA`

s are added so that result has same number of elements or rows as`data`

. - align
- character specifying whether result should be left- or right-aligned or centered (default).

##### Details

Groups time points in successive sets of `width`

time points and
applies `FUN`

to the corresponding values. If `FUN`

is
`mean`

, `max`

or `median`

and `by.column`

is
`TRUE`

and there are no extra arguments
then special purpose code is used to enhance performance.
See `rollmean`

, `rollmax`

and `rollmedian`

for more details.
Currently, there are methods for `"zoo"`

and `"ts"`

series.
In previous versions, this function was called `rapply`

. It was renamed
because from R 2.4.0 on, base R provides a different function `rapply`

for recursive (and not rolling) application of functions. The function
`zoo::rapply`

is still provided for backward compatibility, however
it dispatches now to `rollapply`

methods.

##### Value

- A object of the same class as
`data`

with the results of the rolling function.

##### See Also

##### Examples

```
z <- zoo(11:15, as.Date(31:35))
rollapply(z, 2, mean)
z2 <- zoo(rnorm(6))
rollapply(z2, 3, mean, by = 3) # means of nonoverlapping groups of 3
aggregate(z2, c(3,3,3,6,6,6), mean) # same
rollapply(z2, 3, mean) # uses rollmean which is optimized for mean
rollmean(z2, 3) # same
rollapply(z2, 3, (mean)) # does not use rollmean
```

*Documentation reproduced from package zoo, version 1.2-2, License: GPL*