Thanks Gabor, that worked great!
Gabor Grothendieck wrote: > > On Thu, Mar 10, 2011 at 11:27 AM, mathijsdevaan > <mathijsdev...@gmail.com> wrote: >> Hi, >> >> I have a data.frame of the following type: >> >> F = data.frame(read.table(textConnection(" A B >> 1 1 4 >> 2 1 3 >> 3 1 1 >> 4 1 4 >> 5 1 2 >> 6 1 2 >> 7 1 2 >> 8 2 1 >> 9 2 1 >> 10 2 1 >> 11 2 1 >> 12 3 2 >> 13 3 4 >> 14 3 1 >> 15 3 1 >> 16 3 1"),head=TRUE,stringsAsFactors=FALSE)) >> >> F >> A B >> 1 1 4 >> 2 1 3 >> 3 1 1 >> 4 1 4 >> 5 1 2 >> 6 1 2 >> 7 1 2 >> 8 2 1 >> 9 2 1 >> 10 2 1 >> 11 2 1 >> 12 3 2 >> 13 3 4 >> 14 3 1 >> 15 3 1 >> 16 3 1 >> >> I want to generate a new column in which I calculate the (cum)sum of the >> last 3 B's for each group A, so that F$C becomes: >> >> A B C >> 1 1 4 0 >> 2 1 3 4 >> 3 1 1 7 >> 4 1 4 8 >> 5 1 2 8 >> 6 1 2 7 >> 7 1 2 8 >> 8 2 1 0 >> 9 2 1 1 >> 10 2 1 2 >> 11 2 1 3 >> 12 3 2 0 >> 13 3 4 2 >> 14 3 1 6 >> 15 3 1 7 >> 16 3 1 6 >> >> I tried this: >> library(zoo) >> F$C = rollapply(as.zoo(F$B), 3, FUN = function(x) >> cumsum(x)-(x),na.pad=TRUE) >> > > Try this: > > library(zoo) > > roll <- function(x) { > x <- zoo(c(0, 0, 0, x)) > rollapply(x, 4, sum, align = "right") - x > } > F$C <- unlist(tapply(F$B, F$A, roll)) > > > In the unreleased version of zoo there is a partial= argument on > rollapply which will make it possible to reduce roll, above, to this: > > roll <- function(x) rollapply(x, 4, sum, align = "right", partial = > TRUE) - x > > > > -- > Statistics & Software Consulting > GKX Group, GKX Associates Inc. > tel: 1-877-GKX-GROUP > email: ggrothendieck at gmail.com > > ______________________________________________ > 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. > -- View this message in context: http://r.789695.n4.nabble.com/Moving-window-per-group-tp3346225p3347703.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.