You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用tidyverse函数创建增量不超incr的累积求和新列?

使用tidyverse生成受限增量的累积列

我希望用tidyverse函数创建一个新数据列,使其累加值等于现有列的累积和,但每次增量不超过incr。

初始示例数据

incr <- 1.5
df <- data.frame(a = c(6,0,0,2.5,0,0))
df
    a
1 6.0
2 0.0
3 0.0
4 2.5
5 0.0
6 0.0

预期输出

需要基于incr生成新列b,结果如下:

a   b
1 6.0 1.5
2 0.0 1.5
3 0.0 1.5
4 2.5 1.5
5 0.0 1.5
6 0.0 1.0

我试过用tidyr::uncount(),但它不支持非整数增量;也尝试过mutate结合向量化函数,还考虑过rowwise(),但多数思路都需要迭代。

可以用排队下载来类比这个需求:列a代表各时间点的下载请求(比如第1次请求6MB,第4次请求2.5MB),incr是下载速度上限(1.5MB/周期),列b就是每个周期的实际下载量,直到所有请求都完成。

第二个示例数据

incr <- 1.5
df <- data.frame(a = rep(0,100),b=rep(0,100))
df$a[c(30,33,38)] = c(6,2.5,1)
df[30:39,]
     a b
30 6.0 0
31 0.0 0
32 0.0 0
33 2.5 0
34 0.0 0
35 0.0 0
36 0.0 0
37 0.0 0
38 1.0 0
39 0.0 0

对应预期输出

a   b
30 6.0 1.5
31 0.0 1.5
32 0.0 1.5
33 2.5 1.5
34 0.0 1.5
35 0.0 1.0
36 0.0 0.0
37 0.0 0.0
38 1.0 1.0
39 0.0 0.0

内容的提问来源于stack exchange,提问作者Joseff Kolman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 17:00:09