r - 基于另一列 (R) 值的列的累积和

标签 r

我有一个包含 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/

相关文章:

r - 如何使用 R 从 Github 下载整个存储库?

r - SLX 模型 - 使用 splm 包和 slag 函数在 R 数据中使用面板的空间计量经济学

r - R::dexp 的参数化

将研究级荟萃分析 reshape /转换为个体患者数据荟萃分析

r - 如何使用不同条件评估 data.table 中的列

r - 在 R 中绘制没有 for 循环的线条

r - 通过两次拟合提升树来获得不同的值

r - 获取整数原子向量(相对于数字)

r - 将参数传递给 R 函数使用 plyr

r - r 中的嵌套 dplyr 循环