Применение функции к группам внутри data.frame в R

Я пытаюсь получить кумулятивную сумму переменной (v) для групп ("a" и " b") внутри фрейма данных. Как я могу получить результат внизу, чьи строки правильно пронумерованы, в столбец cs моего фрейма данных?

> library(nlme)
> g <- factor(c("a","b","a","b","a","b","a","b","a","b","a","b"))
> v <- c(1,4,1,4,1,4,2,8,2,8,2,8)
> cs <- rep(0,12)
> d <- data.frame(g,v,cs)

> d
   g v cs
1  a 1 0
2  b 4 0
3  a 1 0
4  b 4 0
5  a 1 0
6  b 4 0
7  a 2 0
8  b 8 0
9  a 2 0
10 b 8 0
11 a 2 0
12 b 8 0

> r=gapply(d,FUN="cumsum",form=~g, which="v")
>r

$a     
   v   
1  1   
3  2   
5  3  
7  5  
9  7  
11 9  

$b    
    v 
2   4 
4   8 
6  12 
8  20 
10 28 
12 36 

> str(r)
List of 2
 $ a:'data.frame':  6 obs. of  1 variable:
  ..$ v: num [1:6] 1 2 3 5 7 9
 $ b:'data.frame':  6 obs. of  1 variable:
  ..$ v: num [1:6] 4 8 12 20 28 36

Я думаю, я мог бы придумать какой-нибудь трудоемкий способ получить данные из этих фреймов данных в d$cs, но здесь должна быть какая-то простая настройка, которую я упускаю.

14
задан ekad 30 November 2017 в 05:41
поделиться