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

在R中基于数据框滞后行的另一列计算raw_gdp值

计算分组累计raw_gdp的实现方法

你可以通过dplyr包的分组、排序和滞后计算来实现需求,核心逻辑是按sim_num分组后,从初始GDP值开始,逐行用前一行的raw_gdp乘以当前行的增长系数:

# 加载dplyr包(未安装的话先运行install.packages("dplyr"))
library(dplyr)

# 定义初始GDP值
initial_raw_gdp <- 555690000000

# 处理数据框
gdp <- gdp %>%
  # 按模拟编号分组,确保每组内日期按时间顺序排列
  group_by(sim_num) %>%
  arrange(date, .by_group = TRUE) %>%
  # 计算raw_gdp:第一行用初始值,后续行用前一行值乘以增长系数
  mutate(
    raw_gdp = case_when(
      row_number() == 1 ~ initial_raw_gdp,
      TRUE ~ lag(raw_gdp) * (1 + gdp_change / 100)
    )
  ) %>%
  # 取消分组
  ungroup()

逻辑说明

  • group_by(sim_num):让每个模拟编号的数据独立计算,互不干扰
  • arrange(date, .by_group = TRUE):强制每组内的日期按升序排列,避免因数据顺序混乱导致计算错误
  • case_when+lag(raw_gdp):第一行直接赋值初始GDP,后续行调用前一行的raw_gdp,乘以(1 + gdp_change/100)得到当前行的GDP值

验证结果

运行后检查对应行的结果:

  • sim_num=1的2023-03-31行:555690000000*(1+1.2992509/100) = 562909807326,与示例一致
  • sim_num=2的2023-03-31行:555690000000*(1-0.846561/100) = 550985745179,与示例一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:52:56