我遇到麻烦但也许找不到解决办法。
支持我对一个名为 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])
任何可以解决此问题的功能,建议或包裹?
答案 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添加到第二步。