On Thu, Jul 15, 2010 at 4:21 PM, Dennis Murphy <djmu...@gmail.com> wrote:
> Hi:
>
> Tal was on the right track, but the function in package zoo that applies
> here is rollapply():
>
> library(zoo)
> m<-matrix(seq(1,80),ncol=20, nrow=4)
> t(apply(m, 1, function(x) rollapply(zoo(x), width = 5, FUN = mean, by = 5)))
>     [,1] [,2] [,3] [,4]
> [1,]    9   29   49   69
> [2,]   10   30   50   70
> [3,]   11   31   51   71
> [4,]   12   32   52   72
>
> The width argument determines the number of values per subgroup to process,
> and by determines the spacing between 'windows' of values. Since the
> objective here was to summarize nonoverlapping blocks of size 5, both width
> and by have to be specified with the same value.
>

Just to build on Dennis' solution rollapply will act column by column
so we can reduce it slightly to:

   out <- t(rollapply(zoo(t(m)), 5, by = 5, mean))
   dimnames(out) <- NULL # optional

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to