# Moving column averaging Classic List Threaded 6 messages Open this post in threaded view
|

## Moving column averaging

 This post has NOT been accepted by the mailing list yet. Dear all I'm new to R, so thanks for your indulgence:) - I have a matrix (154 columns x 1000 rows) a,b,c,d,e,f,... and want to calculate a new matrix (77 columns x 1000 rows) based on the averages of columns ab,cd,ef, etc... So my question is which is the easiest way in R to get from this:  a, b, c, d, e, f, ....  1, 2, 5, 9, 1, 4, ...  2, 3, 9, 6, 5, 7, ... to this :  ab, cd, ef, ....  1.5, 7.0, 2.5, ...  2.5, 7.5, 6.0, ... Thanks for any help! Chega Gaglieri
Open this post in threaded view
|

## Re: Moving column averaging

 This post was updated on . # need zoo to use rollapply() library(zoo) # your data (I called df) df <- structure(list(a = 1:2, b = 2:3, c = c(5L, 9L), d = c(9L, 6L),     e = c(1L, 5L), f = c(4, 7)), .Names = c("a", "b", "c", "d", "e", "f"), class = "data.frame", row.names = c(NA, -2L)) # transpose and make a zoo object df2 <- zoo(t(df)) #rollapply to get means and transpose back means <- t(rollapply(df2, width=2, by=2, FUN=mean)) # adding the combined column names you requested colnames(means) <- apply(matrix(names(df), nrow=2), 2, paste, collapse=" ") means HTH Chega wrote Dear all I'm new to R, so thanks for your indulgence:) - I have a matrix (154 columns x 1000 rows) a,b,c,d,e,f,... and want to calculate a new matrix (77 columns x 1000 rows) based on the averages of columns ab,cd,ef, etc... So my question is which is the easiest way in R to get from this:  a, b, c, d, e, f, ....  1, 2, 5, 9, 1, 4, ...  2, 3, 9, 6, 5, 7, ... to this :  ab, cd, ef, ....  1.5, 7.0, 2.5, ...  2.5, 7.5, 6.0, ... Thanks for any help! Chega Gaglieri
Open this post in threaded view
|

## Re: Moving column averaging

 On Thu, Dec 1, 2011 at 7:13 PM, B77S <[hidden email]> wrote: > # need zoo to use rollapply() > > # your data (I called df) > df <- structure(list(a = 1:2, b = 2:3, c = c(5L, 9L), d = c(9L, 6L), >    e = c(1L, 5L), f = c(4, 7)), .Names = c("a", "b", "c", "d", > "e", "f"), class = "data.frame", row.names = c(NA, -2L)) > > # transpose and make a zoo object > df2 <- zoo(t(df)) > > #rollapply to get means and transpose back > means <- t(rollapply(df2, width=2, by=2, FUN=mean)) > > # adding the combined column names you requested > colnames(means) <- apply(matrix(names(df), nrow=2), 2, paste, collapse=", ") > Note that zoo's rollapply also works on plain matrices and vectors. -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Moving column averaging

 Sorry for that, and thanks Gabor, I could have sworn that it wouldn't. Gabor Grothendieck wrote On Thu, Dec 1, 2011 at 7:13 PM, B77S <[hidden email]> wrote: > # need zoo to use rollapply() > > # your data (I called df) > df <- structure(list(a = 1:2, b = 2:3, c = c(5L, 9L), d = c(9L, 6L), >    e = c(1L, 5L), f = c(4, 7)), .Names = c("a", "b", "c", "d", > "e", "f"), class = "data.frame", row.names = c(NA, -2L)) > > # transpose and make a zoo object > df2 <- zoo(t(df)) > > #rollapply to get means and transpose back > means <- t(rollapply(df2, width=2, by=2, FUN=mean)) > > # adding the combined column names you requested > colnames(means) <- apply(matrix(names(df), nrow=2), 2, paste, collapse=", ") > Note that zoo's rollapply also works on plain matrices and vectors. -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.