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

如何使用dplyr的lag函数生成多层嵌套分组下的滞后变量

正确实现方法

核心逻辑:你需要将*不随波次变化的分组维度(party、inc)*设置为分组变量,wave仅作为组内排序的依据,不要放入分组参数中。

dplyr 实现代码

library(dplyr)
df %>% 
  group_by(party, inc) %>% 
  arrange(wave, .by_group = TRUE) %>% 
  mutate(lag = lag(value, n = 1))

如果不需要显式修改原数据排序,也可以直接在lag函数中指定排序字段,写法更简洁:

df %>% 
  group_by(party, inc) %>% 
  mutate(lag = lag(value, order_by = wave))

运行上述代码得到的结果与你给出的预期输出完全一致。

错误原因说明

  • 按wave分组:分组后每个组内均为同一波次的观测,无法提取上一波次的数值
  • 按party+wave分组:分组后每个组内为同一党派同一波次的观测,同样无法跨波次取值
  • 按party+wave+inc分组:每个分组仅含1条观测,计算滞后自然全部返回NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 18:54:05