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

在R语言中按组计算当前行与组内首行的差值

在R语言中按组计算当前行与组内首行的数值差值

下面提供两种常用实现方法,针对你的数据集需求,新增列c展示每个a组内当前行b值与组内首行b值的差值:

方法1:使用dplyr包(tidyverse生态)

这是数据处理中可读性较强的常用方式:

# 若未安装dplyr,先运行 install.packages("dplyr")
library(dplyr)

# 构造数据集
a <- c(1,1,1,1,2,2,2,2)
b <- c(2,4,6,8,10,12,14,16)
have <- data.frame(a, b)  # 直接用data.frame构造,避免cbind可能的类型转换问题

# 新增目标列c
want <- have %>%
  group_by(a) %>%
  mutate(c = b - first(b)) %>%
  ungroup()  # 可选:取消分组状态,便于后续操作

# 查看结果
want

运行输出:

# A tibble: 8 × 3
      a     b     c
  <dbl> <dbl> <dbl>
1     1     2     0
2     1     4     2
3     1     6     4
4     1     8     6
5     2    10     0
6     2    12     2
7     2    14     4
8     2    16     6

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

利用ave函数实现分组计算:

# 构造数据集
a <- c(1,1,1,1,2,2,2,2)
b <- c(2,4,6,8,10,12,14,16)
have <- data.frame(a, b)

# 新增目标列c
have$c <- ave(have$b, have$a, FUN = function(x) x - x[1])

# 查看结果
have

运行输出:

a  b c
1 1  2 0
2 1  4 2
3 1  6 4
4 1  8 6
5 2 10 0
6 2 12 2
7 2 14 4
8 2 16 6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:27:41