[R] apply a function to a rolling subset of a vector
Ken Knoblauch
knoblauch at lyon.inserm.fr
Wed Mar 2 22:42:01 CET 2005
Try this:
> ?convolve
> x<-rnorm(1000)
> y<-rep(1,20)
> z<-convolve(x,y,type="filter")
> plot(x,type="l")
> str(z)
num [1:981] 6.31 7.28 8.16 7.39 4.65 ...
> lines(c(rep(0,10),z,rep(0,10)),col="yellow",lwd=3)
> lines(c(rep(0,10),z,rep(0,10))/length(y),col="red",lwd=3) #running mean
You wrote:
Does anyone know an easy way to calculate the rolling 20 period average
or sum of a vector?
For instance:
x <- rnorm(1000)
y <- apply.subset(x,20,fun="sum")
The first element of y would contain the sum of elements 1 to 20, the
second element of y
would contain the sum of elements 2:21, and so on.
I thought I had seen this on the list a year or so ago, but I couldn't
find anything in the archives.
Thanks in advance,
Whit
[[alternative HTML version deleted]]
____________________
Ken Knoblauch
Inserm U 371
Cerveau et Vision
18 avenue du Doyen Lepine
69675 Bron cedex
France
tel: +33 (0)4 72 91 34 77
fax: +33 (0)4 72 91 34 61
portable: 06 84 10 64 10
More information about the R-help
mailing list