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

R中计算同分组内相邻行差值、不同分组返回NA的实现方法

R语言分组计算相邻行差值实现方法

实现思路

使用dplyr包的分组函数+偏移函数即可直接满足需求:

  • 按名称列x分组后,每个分组内单独计算偏移
  • 用当前行的y值减去前一行的y值,跨分组时偏移函数取不到对应值会默认返回NA,刚好符合不同分组之间差值返回NA的规则

完整实现代码

首先加载依赖包,再执行计算:

# 加载dplyr包,如果未安装先运行 install.packages("dplyr")
library(dplyr)
# 示例数据
df <- data.frame(
  x = c("Jimmy Page","Jimmy Page","Jimmy Page","Jimmy Page", "John Smith", "John Smith", "John Smith",  "Joe Root", "Joe Root", "Joe Root", "Joe Root", "Joe Root"), 
  y = c(1,2,3,4,5,7,89,12,34,67,95,9674 )
)
# 计算分组相邻差值
df <- df %>%
  group_by(x) %>%
  mutate(y_diff = y - lag(y)) %>%
  ungroup() # 可选,计算完成后取消分组方便后续处理

输出结果验证

运行后得到的y_diff列结果如下:

xyy_diff
Jimmy Page1NA
Jimmy Page21
Jimmy Page31
Jimmy Page41
John Smith5NA
John Smith72
John Smith8982
Joe Root12NA
Joe Root3422
Joe Root6733
Joe Root9528
Joe Root96749579

完全符合需求:同一分组内相邻行差值正常计算,每个分组的第一行以及跨分组的位置自动返回NA。

基础包实现方案(无需安装第三方包)

如果不想依赖第三方包,可以用基础包的ave函数实现:

df$y_diff <- ave(df$y, df$x, FUN = function(v) c(NA, diff(v)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:24:05