#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" )
using "rollapply" to calculate a moving sum or running sum?
4 messages · Anika Masters, Adams, Jean, Gabor Grothendieck +1 more
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130627/1d12a5f4/attachment.pl>
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
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.