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

如何在R语言中按列对计算X-Y差值并合并列?

实现方法

方法一:基础R原生操作

通过提取列名的数字后缀,分组计算X-Y的差值:

# 提取所有列名中的数字部分
nums <- sub("^[XY]", "", colnames(df1))
# 获取唯一的数字标识
unique_nums <- unique(nums)

# 初始化结果存储列表
result_list <- list()
for(num in unique_nums) {
  # 匹配对应X和Y列,计算差值
  x_col <- df1[, paste0("X", num)]
  y_col <- df1[, paste0("Y", num)]
  result_list[[num]] <- x_col - y_col
}

# 转换为目标数据框
df2 <- as.data.frame(result_list)

运行后即可得到列名为对应数字、值为X-Y差值的df2。

方法二:使用tidyverse工具链(dplyr + tidyr)

如果习惯tidyverse的语法风格,这种方法更简洁直观:

library(tidyverse)

df2 <- df1 %>%
  # 添加行标识(适配多场景,单数据行也适用)
  mutate(row_id = row_number()) %>%
  # 转长格式,拆分X/Y前缀与数字后缀
  pivot_longer(-row_id, names_to = c(".value", "num"), names_pattern = "([XY])(\\d+)") %>%
  # 计算X减Y的差值
  mutate(diff = X - Y) %>%
  # 转回宽格式,以数字为列名
  pivot_wider(id_cols = row_id, names_from = num, values_from = diff) %>%
  # 移除行标识列
  select(-row_id)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:25:59