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

如何正确计算数据集中个体x1变量的年度变化值?

问题描述

原始数据集如下:

IndividualYearx1x2
1135
1274
1386
2106
2292

需要创建变量Change_x1,计算每个个体的x1相较于上一年的变化值,目标格式如下:

IndividualYearx1x2Change_x1
1135NA
12744
13861
2106NA
22929

尝试了以下R代码,但运行后Change_x1列全部为NA:

data%>%
group_by(Individual,Year)%>%
mutate(Change_x1 = x1 - lag(x1))
错误原因

问题出在group_by(Individual, Year):每个分组同时绑定了个体和年份,导致每个分组内只有1行数据。lag(x1)需要引用同一分组内的前一行数据,单个观测的分组没有前一行可调用,所以结果全为NA。

解决方法

仅按Individual分组,同时确保每个个体的观测按年份排序(如果数据已按年份排列可省略arrange,但添加后更稳妥),再计算变化值:

library(dplyr)

data %>%
  arrange(Individual, Year) %>%  # 确保每个个体的年份按顺序排列
  group_by(Individual) %>%       # 仅按个体分组
  mutate(Change_x1 = x1 - lag(x1)) %>%
  ungroup()  # 可选:取消分组,避免后续操作受分组影响

运行以上代码后,就能得到目标格式的结果:每个个体的第一年Change_x1为NA,后续年份为对应x1与上一年的差值。

内容的提问来源于stack exchange,提问作者Student In Need

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:20:18