I have a dataframe of numeric values with 30 ?rows? and 7 ?columns?. For each column, beginning at ?row? 12 and down to ?row? 30, I wish to calculate the ?rolling 12 row product?. I.e., within each column, I wish to multiply all the values in row 1:12, 2:13, 19:30. I wish to save the results as a new dataframe, which will have 19 rows and 7 columns.
Chuck Cleland
2006-Feb-28 15:36 UTC
[R] vector math: calculating a rolling 12 row product?
How about applying cumprod to the columns and then subsetting the result? apply(mydata, 2, cumprod)[12:30,] ?cumprod r user wrote:> I have a dataframe of numeric values with 30 ?rows? > and 7 ?columns?. > > For each column, beginning at ?row? 12 and down to > ?row? 30, I wish to calculate the ?rolling 12 row > product?. I.e., within each column, I wish to > multiply all the values in row 1:12, 2:13,?19:30. > > I wish to save the results as a new dataframe, which > will have 19 rows and 7 columns. > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >-- Chuck Cleland, Ph.D. NDRI, Inc. 71 West 23rd Street, 8th floor New York, NY 10010 tel: (212) 845-4495 (Tu, Th) tel: (732) 452-1424 (M, W, F) fax: (917) 438-0894
Gabor Grothendieck
2006-Feb-28 15:41 UTC
[R] vector math: calculating a rolling 12 row product?
Use as.matrix to convert your data frame to a matrix
and suppose we have this test data as a matrix:
mat <- matrix(seq(30*7), 30, 7)
Then try this:
library(zoo)
mat2 <- coredata(rapply(zoo(mat), 12, prod))
See:
library(zoo)
vignette("zoo")
and the various zoo help files for more info.
On 2/28/06, r user <ruser2006 at yahoo.com> wrote:> I have a dataframe of numeric values with 30 "rows"
> and 7 "columns".
>
> For each column, beginning at "row" 12 and down to
> "row" 30, I wish to calculate the "rolling 12 row
> product". I.e., within each column, I wish to
> multiply all the values in row 1:12, 2:13,?19:30.
>
> I wish to save the results as a new dataframe, which
> will have 19 rows and 7 columns.
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
>