[R] Computing Rolling Average
William Dunlap
wdunlap at tibco.com
Tue Nov 16 21:14:58 CET 2010
Have you tried filter()?
filter(a, rep(1,7)/7)
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Ray Brownrigg
> Sent: Tuesday, November 16, 2010 12:05 PM
> To: r-help at r-project.org
> Subject: Re: [R] Computing Rolling Average
>
> On Wed, 17 Nov 2010, Paolo Rossi wrote:
> > Hi,
> > Can anyone suggest a clever way to compute a rolling
> weekly average of the
> > columns in a matrix? The column bit is straightforward -
> use apply given a
> > function which does what you want on a column. With regard
> to a particular
> > column, the obvious way is to run a for loop indexing the
> last 7 days and
> > computing the average . I simply would like to know if
> there is a better /
> > quicker way.
> >
> >
> >
> > Code:
> > Given a,
> >
> > > a= array(1:100, dim = c(17,2))
> > > a
> >
> > [,1] [,2]
> > [1,] 1 18
> > [2,] 2 19
> > [3,] 3 20
> > [4,] 4 21
> > [5,] 5 22
> > [6,] 6 23
> > [7,] 7 24
> > [8,] 8 25
> > [9,] 9 26
> > [10,] 10 27
> > [11,] 11 28
> > [12,] 12 29
> > [13,] 13 30
> > [14,] 14 31
> > [15,] 15 32
> > [16,] 16 33
> > [17,] 17 34
> > one needs to start computing the average from obs 7 s (at
> obs 7 you have a
> > full week to compute the average) and compute the rolling
> weekly average
> > from day 7 onwards
> > Results will look like b
> > [,1] [,2]
> > [1,] 4 14
> > [2,] 5 21
> > [3,] 6 22
> > [4,] 7 23
> > [5,] 8 24
> > [6,] 9 25
> > [7,] 10 26
> > [8,] 11 27
> > [9,] 12 28
> > [10,] 13 29
> > Thanks in advance,
> >
> I don't see how an average of 7 numbers all 18 or greater can
> be 14, as in your
> result[1, 2], unless you have mis-stated the question.
>
> Anyway, try:
> apply(a, 2, function(x) {cx <- cumsum(x); N <- length(x);
> (cx[7:N] - c(0, cx[1:(N-7)]))/7}
>
> HTH
> Ray Brownrigg
>
> > Paolo
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list