使用R中的下一列/行的累积和

时间:2016-05-04 07:00:33

标签: r sum row

我遇到麻烦但也许找不到解决办法。

支持我对一个名为 TOTAL 的变量的初始值为1,000,并使用另一列我想做累积和,无论是负值还是正值。

问题是我不想手动但可重现。

这是预期的输出:

Profit  TOTAL
1  -10.0  990       #Started with 1,000
2   16.3 1006.3     #990 + 16.3
3  -10.0  996.3     #1006.3 - 10
4  -10.0  986.3     #And so on....
5   14.0 1000.3
6  -10.0  990.3

我尝试使用cumsum函数,但我不知道如何实现它:

df %>% mutate(cumsum = cumsum(Profit)))

我尝试了一下,但我失败了:

sapply(df[,c("TOTAL")], function(x) df$Profit[x+2] + df$TOTAL[x+1])

任何可以解决此问题的功能,建议或包裹?

2 个答案:

答案 0 :(得分:4)

如果我理解你的权利,你只需要

df=data.frame(profit=c(-10,16.3,-10,-10,14,-10))
total=1000
df$TOTAL=total+cumsum(df$profit)

 profit  TOTAL
1  -10.0  990.0
2   16.3 1006.3
3  -10.0  996.3
4  -10.0  986.3
5   14.0 1000.3
6  -10.0  990.3

答案 1 :(得分:1)

也可能是在调用mutate时需要显式设置dplyr包。

df %>% dplyr::mutate(cumsum = cumsum(Profit)))

虽然仍然需要将1000添加到第二步。