Yearly aggregates and matrices
On Thu, Apr 28, 2011 at 4:49 PM, mathijsdevaan <mathijsdevaan at gmail.com> wrote:
Thanks, but it did not really improve the speed. Why is it that when I change
the layout of the matrix (which does not give the required results), the
speed increases tremendously? So:
library(reshape2)
library(zoo)
z <- read.zoo(DF, split = 3, index = 2, FUN = identity) # Split on 3 and
index on 2 instead of vice versa
sum.na <- function(x) if (any(!is.na(x))) sum(x, na.rm = TRUE) else NA
r <- rollapply(z, 3, ?sum.na, align = "right", partial = TRUE)
or
mm <- melt(DF, id = c("B", "C"))
aa <- acast(mm, B ~ C + variable, FUN = sum) # B ~ C instead of C ~ B
sum.na <- function(x) if (any(!is.na(x))) sum(x, na.rm = TRUE) else NA
r <- rollapply(aa, 3, ?sum.na, align = "right", partial = TRUE)
For me it makes little difference:
system.time(for(i in 1:100) read.zoo(DF, split = 3, index = 2, FUN = identity))
user system elapsed 1.72 0.00 1.71
system.time(for(i in 1:100) read.zoo(DF, split = 2, index = 3, FUN = identity))
user system elapsed 1.75 0.00 1.74
Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com