You need to enable JavaScript to run this app. R中如何对data.table/data.frame的指定列按规则成对相减计算差值
优惠活动
大模型
产品
解决方案
定价
更多

R中如何对data.table/data.frame的指定列按规则成对相减计算差值

实现方案

你可以根据自己的使用习惯选择以下两种常用实现方式:

方法1:基础R实现(无需加载额外包)

# 提取所有列名的公共前缀(去除末尾的1、2后缀)
prefixes <- unique(sub("\\d$", "", names(df)))
# 遍历每个前缀批量计算差值并追加到原数据框
for (p in prefixes) {
  df[[paste0(p, "_diff")]] <- df[[paste0(p, 2)]] - df[[paste0(p, 1)]]
}

该方法会自动匹配所有前缀相同、后缀为1/2的列对计算差值,不需要手动指定列名,适配列对数较多的场景。

方法2:dplyr实现(适合tidyverse生态用户)

如果你的列对数量较少,可以直接手动指定计算逻辑,写法更直观:

library(dplyr)
df <- df %>%
  mutate(
    h_diff = h2 - h1,
    w_diff = w2 - w1,
    e_diff = e2 - e1
  )

如果列对数量多,也可以用批量语法实现自动化计算:

library(dplyr)
library(stringr)

prefixes <- unique(str_remove(names(df), "\\d$"))
df <- df %>%
  mutate(across(all_of(paste0(prefixes, 2)), 
                .names = "{str_remove(.col, '2')}_diff") - 
           across(all_of(paste0(prefixes, 1))))

运行以上任意一种方法后,原数据框会追加h_diff、w_diff、e_diff三列差值,最终输出的完整数据表同时包含原始列和差值列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 03:54:06