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

R语言中按行索引对两个DataFrames做减法并保留df1独有行

R语言按行索引实现两个DataFrame减法操作

需求说明

对两个DataFrame按照行索引执行减法,规则如下:

  • 两个数据框都存在的行索引,对应位置数值相减
  • df1中存在但df2中不存在的行,直接保留df1的原始值

测试数据示例

# 原始测试数据
df1 <- data.frame(V1=c(0,1,3,5,1,6), V2=6:11, V3=6:11)
df2 <- data.frame(V1=1:5, V2=c(0,1,3,5,1), v3=rep(0, 5))

期望输出

> df
  V1 V2 V3
1 -1  6  6
2 -1  6  7
3  0  5  8
4  1  4  9
5 -4  9 10
6  6 11 11

实现方法

操作步骤

  • 先统一两个数据框的列名(解决示例中df2第三列v3小写与df1V3不匹配的问题)
  • 对齐列顺序,确保两个数据框列的计算逻辑一致
  • 将df2扩展到和df1相同的行数,缺失的行填充0
  • 直接执行两个数据框的减法运算即可得到结果

完整代码

# 1. 统一列名并对齐列顺序
colnames(df2) <- colnames(df1)
df2 <- df2[, colnames(df1)]

# 2. 扩展df2到和df1相同行数,缺失行填充0
df2_pad <- df2[1:nrow(df1), ]
df2_pad[is.na(df2_pad)] <- 0

# 3. 执行减法
res <- df1 - df2_pad

# 打印验证结果
print(res)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:15:03