我有一个包含 2 列的数据框,如下所示:
> data.frame(x=1:10, y=c(0,0,0,1,1,0,0,1,0,1))
x y
1 1 0
2 2 0
3 3 0
4 4 1
5 5 1
6 6 0
7 7 0
8 8 1
9 9 0
10 10 1
并且我想获得列 x
的累计和 (cumsum(df$x)
),但是应该在 1< 之后重置总和
出现在 y
列中。这是我正在寻找的结果:
1
3
6
10
5
6
13
21
9
19
我如何在 R 中实现这一点?
最佳答案
您可以使用 ave
实现:
ave(d$x,c(0,cumsum(d$y[-nrow(d)])),FUN=cumsum)
# [1] 1 3 6 10 5 6 13 21 9 19
关于r - 基于另一列 (R) 值的列的累积和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993468/