HI there, Consider a data set like this:
> x <- data.frame(a=1:10, b=11:20, t=c(1,1,1,2,2,2,3,3,3,3)) > x a b t 1 1 11 1 2 2 12 1 3 3 13 1 4 4 14 2 5 5 15 2 6 6 16 2 7 7 17 3 8 8 18 3 9 9 19 3 10 10 20 3 Here x$t is a vector of integers that represent a moment in time. I would like to calculate a function of a & b at each moment (t0), but using the rows corresponding not only to moment t0 but also all moments t < t0. For example, if the function was f(a,b) = sum(a - b), the result would be t f 1 -30 # (1-11) + (2-12) + (3-13) 2 -60 3 -100 As far as I know there is no built-in function in R to group rows like this. The naive approach of using a loop is doable but extremely slow even for small data sets. result <- NULL for (i in unique(x$t)) { part <- x[x$t <= i,] result <- rbind(result, sum(part$a + part$b)) } So, any suggestions? Note: in this example, it is possible to calculate f() for each subset using by() and then accumulate the results, but with other functions this won't work. Cheers, Ernest ______________________________________________ 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.