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

R语言按分组以组内首行值为固定参考计算数值差值的实现方法

解决方案

1. dplyr 实现

核心使用dplyr内置的first()函数获取分组首行的参考值,再将组内第一行的差值设为NA即可:

library(dplyr)
# 构造示例数据
df <- data.frame(
  group = c(1,1,1,2,2,2),
  value = c(10,20,25,5,10,15)
)
# 计算差值
df_result <- df %>%
  group_by(group) %>%
  mutate(
    diff = value - first(value),
    diff = replace(diff, row_number() == 1, NA)
  ) %>%
  ungroup()

输出结果和你预期完全一致。

2. data.table 实现

如果习惯用data.table,可以搭配first()和组内行号函数rowid()实现:

library(data.table)
setDT(df)
df_result <- df[, diff := value - first(value), by = group][rowid(group) == 1, diff := NA][]

3. 基础R实现

无需加载第三方包,用ave()函数分组计算即可:

df$diff <- ave(df$value, df$group, FUN = function(x) x - x[1])
df$diff[ave(df$value, df$group, FUN = seq_along) == 1] <- NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:24:00