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

R语言如何按id分组对响应变量实现一阶时间滞后处理

R实现分组内响应变量一阶滞后匹配

你需要实现的逻辑是:按id分组后以year为时间序,将当期points匹配下一期的result值,剔除每个分组无下一期结果的最后一行,以下是两种常用实现方法:

方法1:dplyr实现(适合常规分析场景)

library(dplyr)

df_processed <- df %>%
  group_by(id) %>%
  # 组内按年份升序排列,避免时间顺序错位
  arrange(year, .by_group = TRUE) %>%
  # result取下一期的值
  mutate(result = lead(result, n = 1)) %>%
  # 剔除无匹配下一期result的行
  filter(!is.na(result)) %>%
  ungroup()

运行后得到的结果和你给出的目标数据框结构完全一致。

方法2:data.table实现(适合大数据量场景,运行速度更快)

library(data.table)

setDT(df)
df_processed <- df[order(id, year),
                   # 分组对result做向前一位偏移(取下一期值)
                   result := shift(result, n = 1, type = "lead"),
                   by = id][!is.na(result)]

注意:处理前请确认每个id分组内的year无重复、无乱序,否则会出现值匹配错误,直接影响后续回归结果的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:54:32