2017-06-22 81 views
0

我有一个包含4行的数据框。我来总结当前行值和同一列的前一行值,而应该重复,直到塔顶部如何使用R中的sapply在每一行上重复使用函数

aa<-data.frame(groupid=c(0:3),var=rep(10,4)) 
>aa 
groupid var 
0 10 
1 10 
2 10 
3 10 
#if iterating over only 4th row 
>i=4 

#What I want to achieve-> 
>for(x in 1:aa$groupid[i]) { 
    aa$var[i]<-aa$var[i]+aa$var[i-x] 
} 
>aa$var[i] 
40 #aa$var[4]+aa$var[3]+aa$var[2]+aa$var[1] 

#How I want to achieve--> using sapply() as my real data frame is huge and 
#for loop is taking a lot of time 

#What I have achieved till now--> 
>bb<-sapply(aa$groupid[i], function(x){ 
    sum(aa$var[i],aa$var[i-x]) 
}) 
>bb 
20 #aa$var[4]+aa$var[3] 

如何遍历从底部每排sapply(顶部)为它重新保存在同一个变量中的值?

回答

1

您的循环计算所有以前的行(包括它正在评估的行)的累计总和。

在这种情况下,解决方法很简单:

aa$var2 = cumsum(aa$var) 

结果:

> aa 
    groupid var var2 
1  0 10 10 
2  1 10 20 
3  2 10 30 
4  3 10 40 
+0

我得到了答案!谢谢! – Riya

相关问题