Anika Masters
2013-Jun-27 19:00 UTC
[R] using "rollapply" to calculate a moving sum or running sum?
#using "rollapply" to calculate a moving sum or running sum? #I am tryign to use rollapply to calcualte a moving sum? #I tried rollapply and get the error message #"Error in seq.default(start.at, NROW(data), by = by) : # wrong sign in 'by' argument" #example: mymatrix <- ( matrix(data=1:100, nrow=5, ncol=20) ) mymatrix_cumsum <- ( matrix(data=NA, nrow=5, ncol=20) ) w=12 for(i in 1: (ncol(mymatrix)-w+1) ) { mymatrix_cumsum[ , i] <- apply(X=mymatrix[, i:(i+w-1)] , MARGIN=1, FUN=sum, na.rm=T) } #How might I use the "rollapply" function instead? rollapply(mymatrix, 12, sum) rollapply(data = mymatrix, width = 12, FUN=sum, by.column =T, fill NA, partial = FALSE, align = "left" )
Adams, Jean
2013-Jun-27 20:39 UTC
[R] using "rollapply" to calculate a moving sum or running sum?
This gets you close ... Jean library(zoo) t(apply(mymatrix, 1, rollapply, w, sum)) On Thu, Jun 27, 2013 at 2:00 PM, Anika Masters <anika.masters@gmail.com>wrote:> #using "rollapply" to calculate a moving sum or running sum? > > #I am tryign to use rollapply to calcualte a moving sum? #I tried > rollapply and get the error message > #"Error in seq.default(start.at, NROW(data), by = by) : > # wrong sign in 'by' argument" > > #example: > > mymatrix <- ( matrix(data=1:100, nrow=5, ncol=20) ) > mymatrix_cumsum <- ( matrix(data=NA, nrow=5, ncol=20) ) > w=12 > for(i in 1: (ncol(mymatrix)-w+1) ) { > mymatrix_cumsum[ , i] <- apply(X=mymatrix[, i:(i+w-1)] , MARGIN=1, > FUN=sum, na.rm=T) > } > > #How might I use the "rollapply" function instead? > > rollapply(mymatrix, 12, sum) > > rollapply(data = mymatrix, width = 12, FUN=sum, by.column =T, fill > NA, partial = FALSE, align = "left" ) > > ______________________________________________ > R-help@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. >[[alternative HTML version deleted]]
Gabor Grothendieck
2013-Jun-27 21:37 UTC
[R] using "rollapply" to calculate a moving sum or running sum?
On Thu, Jun 27, 2013 at 3:00 PM, Anika Masters <anika.masters at gmail.com> wrote:> #using "rollapply" to calculate a moving sum or running sum? > > #I am tryign to use rollapply to calcualte a moving sum? #I tried > rollapply and get the error message > #"Error in seq.default(start.at, NROW(data), by = by) : > # wrong sign in 'by' argument" > > #example: > > mymatrix <- ( matrix(data=1:100, nrow=5, ncol=20) ) > mymatrix_cumsum <- ( matrix(data=NA, nrow=5, ncol=20) ) > w=12 > for(i in 1: (ncol(mymatrix)-w+1) ) { > mymatrix_cumsum[ , i] <- apply(X=mymatrix[, i:(i+w-1)] , MARGIN=1, > FUN=sum, na.rm=T) > } > > #How might I use the "rollapply" function instead? > > rollapply(mymatrix, 12, sum) > > rollapply(data = mymatrix, width = 12, FUN=sum, by.column =T, fill > NA, partial = FALSE, align = "left" )rollapply works column at a time (not row at a time) so try this: t( rollapply( t(mymatrix), 12, sum ) ) -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com
arun
2013-Jun-27 21:41 UTC
[R] using "rollapply" to calculate a moving sum or running sum?
Hi, Try: library(zoo) rollapply(t(mymatrix),width=12,FUN=sum,by.column=T,fill=NA,partial=FALSE,align="left") ?# ??? [,1] [,2] [,3] [,4] [,5] ?#[1,]? 342? 354? 366? 378? 390 ?#[2,]? 402? 414? 426? 438? 450 ?#[3,]? 462? 474? 486? 498? 510 ?#[4,]? 522? 534? 546? 558? 570 ?#[5,]? 582? 594? 606? 618? 630 ?#[6,]? 642? 654? 666? 678? 690 ?#[7,]? 702? 714? 726? 738? 750 ?#[8,]? 762? 774? 786? 798? 810 ?#[9,]? 822? 834? 846? 858? 870 #[10,]?? NA?? NA?? NA?? NA?? NA #[11,]?? NA?? NA?? NA?? NA?? NA #[12,]?? NA?? NA?? NA?? NA?? NA #[13,]?? NA?? NA?? NA?? NA?? NA #[14,]?? NA?? NA?? NA?? NA?? NA #[15,]?? NA?? NA?? NA?? NA?? NA #[16,]?? NA?? NA?? NA?? NA?? NA #[17,]?? NA?? NA?? NA?? NA?? NA #[18,]?? NA?? NA?? NA?? NA?? NA #[19,]?? NA?? NA?? NA?? NA?? NA #[20,]?? NA?? NA?? NA?? NA?? NA A.K. ----- Original Message ----- From: Anika Masters <anika.masters at gmail.com> To: R help <r-help at r-project.org> Cc: Sent: Thursday, June 27, 2013 3:00 PM Subject: [R] using "rollapply" to calculate a moving sum or running sum? #using "rollapply" to calculate a moving sum or running sum? #I am tryign to use rollapply to calcualte a moving sum? #I tried rollapply and get the error message #"Error in seq.default(start.at, NROW(data), by = by) : #? wrong sign in 'by' argument" #example: mymatrix <- ( matrix(data=1:100, nrow=5, ncol=20) ) mymatrix_cumsum? <- ( matrix(data=NA, nrow=5, ncol=20) ) w=12 for(i in 1: (ncol(mymatrix)-w+1) ) { mymatrix_cumsum[ , i]? <- apply(X=mymatrix[, i:(i+w-1)] , MARGIN=1, FUN=sum, na.rm=T) } #How might I use the "rollapply" function instead? rollapply(mymatrix, 12, sum) rollapply(data = mymatrix, width = 12, FUN=sum, by.column =T, fill NA, partial = FALSE, align = "left" ) ______________________________________________ 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.