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

如何在R中对不同行(不同年份)的变量进行差值计算?

实现数据框新增差值列的两种方法

首先先把你的数据集转换成可直接运行的R数据框:

df <- data.frame(
  Group.1 = as.Date(c("2000-01-01", "2001-01-01", "2002-01-01", "2003-01-01", "2004-01-01")),
  spring = c(46.00000, 33.33333, 37.66667, 31.33333, 35.66667),
  fall = c(19.0, 19.0, 19.0, 13.0, 13.0),
  year = 0:4
)

方法一:基础R原生实现

直接通过向量索引完成计算,无需额外包:

df$diff <- c(NA, df$spring[-1] - df$fall[-nrow(df)])
  • df$spring[-1]提取第2到第5行的spring值
  • df$fall[-nrow(df)]提取第1到第4行的fall值
  • 两者相减得到对应行的差值,开头补NA满足第一行缺失的要求

方法二:dplyr包简洁实现

用dplyr的lag()函数自动偏移fall列,代码更直观:

library(dplyr)

df <- df %>%
  mutate(diff = spring - lag(fall))
  • lag(fall)会将fall列整体向下偏移一行(即当前行的lag(fall)等于上一行的fall值)
  • 直接用当前行spring减去偏移后的fall,第一行因无前置值自动生成NA

最终生成的diff列结果为:NA, 14.33333, 18.66667, 12.33333, 22.66667

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:55:17