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

如何在R中依据ID与年份关联填充'Next Outcome'列?

在R中按ID分组填充下一年的Outcome值

核心方案(dplyr包)

先模拟你提到的Table 1结构数据,再通过分组排序后取后续行的Outcome值:

library(dplyr)

# 模拟Table 1数据
df <- tibble(
  ID = c(1,1,1,2,2),
  Year = c(2020,2021,2022,2020,2021),
  Outcome = c("A", "B", "C", "X", "Y")
)

# 生成Next Outcome列
df_result <- df %>%
  group_by(ID) %>%
  arrange(Year) %>%  # 务必按年份升序排列,保证取到的是下一年的数据
  mutate(`Next Outcome` = lead(Outcome)) %>%  # lead()取分组内下一行的值,最后一行自动为NA
  ungroup()

运行后得到的df_result就是你要的Table 2效果:每个ID的最后一条记录Next Outcome为NA,其余行对应下一年的Outcome值。

大数据场景方案(data.table包)

如果你的数据集很大,用data.table效率更高:

library(data.table)

setDT(df)
df_result_dt <- df[order(Year), `Next Outcome` := shift(Outcome, type = "lead"), by = ID]

注意事项

  • 必须先按Year排序,否则lead()/shift()会取原始数据顺序的下一行,而非下一年的数据
  • 如果存在年份缺失的情况,需要先补全年份(比如用tidyr::complete())再执行上述操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:31:08