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

在R中基于初始值与增长率动态计算列的累积值

动态累积计算解决方案

针对你的需求,使用purrr::accumulate()可以轻松实现逐行动态迭代计算,以下是完整代码:

library(tidyverse)

# 构造原始数据
df <- tibble(date = as.Date("2024-07-01"), starting_n = 100, growth_rate = 0.05) %>%
  bind_rows(
    tibble(date = seq.Date(as.Date("2024-08-01"), as.Date("2024-09-01"), by = "month"), growth_rate = 0.05)
  )

# 计算starting_n_calc
df <- df %>%
  mutate(
    starting_n_calc = accumulate(
      .x = growth_rate[-1], 
      .f = ~ .x * (1 + .y), 
      .init = first(starting_n)
    ) %>% 
      tail(-1) %>% 
      c(NA, .)
  )

# 查看结果
df

运行后输出与预期一致:

# A tibble: 3 × 4
  date       starting_n growth_rate starting_n_calc
  <date>          <dbl>       <dbl>           <dbl>
1 2024-07-01        100        0.05             NA 
2 2024-08-01         NA        0.05            105 
3 2024-09-01         NA        0.05            110.25

代码说明

  • accumulate()函数接收三个参数:
    • .x:需要迭代计算的序列(这里取第2行及以后的growth_rate)
    • .f:迭代逻辑,~ .x * (1 + .y)表示用前一次计算结果.x乘以(1+当前增长率.y)
    • .init:初始值,取第一行的starting_n(100)
  • tail(-1)去掉accumulate返回结果中的初始值,保留后续迭代计算出的105、110.25
  • c(NA, .)在结果开头添加NA,对应第一行无计算值的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:32:39