# Re: [R] Moving window per group

From: mathijsdevaan <mathijsdevaan_at_gmail.com>
Date: Fri, 11 Mar 2011 00:57:26 -0800 (PST)

Thanks Gabor, that worked great!

Gabor Grothendieck wrote:

```>
> On Thu, Mar 10, 2011 at 11:27 AM, mathijsdevaan
> &lt;mathijsdevaan_at_gmail.com&gt; 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
>>
>> 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)
>>
```>
> 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_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> 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_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help