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

如何在R中使用mutate实现每行结果值的累积传递相乘?

实现累积乘积的正确方法

你创建的数据集:

bla <- data.frame(a = c(100, 2:10))

你想要的是累积乘积——从第一个值100开始,每行结果传递到下一行相乘。之前用mutate(cumulative = a * lag(a))失败,是因为lag(a)取的是原始列a的上一行值,不是新生成的cumulative列的计算结果,所以第三行只会算32,而非3200。

直接用R内置的cumprod()函数就能解决问题,它专门用来计算序列的累积乘积:

bla |> mutate(cumulative = cumprod(a))

运行后得到的cumulative列就是你要的结果:

  • 第1行:100
  • 第2行:100*2=200
  • 第3行:200*3=600
  • ...
  • 最后一行:10023*...*10

内容的提问来源于stack exchange,提问作者Doug Fir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:50:24