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

R语言按分组比较同列相邻值计算差值并新增列的实现问题

实现方法

方法1:使用dplyr包(推荐,代码简洁易读)

你可以借助dplyr的group_by()和lag()函数实现需求,lag()函数可以直接取当前行的上一行数值,分组后只会在同一A值的组内取上一行值,天然符合你的需求。
代码示例:

# 加载包
library(dplyr)

# 构造示例数据
df <- data.frame(
  A = c("a", "b", "c", "c", "c", "c"),
  B = c(6, 13, 9, 16, 17, 23)
)

# 计算C列
df <- df %>%
  group_by(A) %>%
  mutate(C = ifelse(is.na(lag(B)), B, B - lag(B))) %>%
  ungroup()

运行后得到的结果和你预期的完全一致。

方法2:基础R实现(无需安装额外包)

如果不想依赖第三方包,可以用ave()函数按A分组计算:

df$C <- ave(df$B, df$A, FUN = function(x) {
  c(x[1], diff(x))
})

这个方法的逻辑是对每个A分组的B向量,直接取第一个元素作为第一个值,后续值用diff()函数计算相邻差,逻辑和你的需求完全匹配。

内容的提问来源于stack exchange,提问作者Maurice Hüttemann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:09:00