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 >