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

在R语言中将单行DataFrame列值累加到另一DataFrame匹配列

解决单行DataFrame数值列累加到多行DataFrame对应列的问题

重建示例数据

先还原问题中的数据场景:

DF1 <- data.frame(
  Location = "USA",
  X123 = 6,
  X124 = 8,
  X125 = 9,
  stringsAsFactors = FALSE
)

DF2 <- data.frame(
  Location = c("USA", "USA"),
  Fips = c(1001, 1002),
  Code = c("A", "B"),
  X123 = c(1, 4),
  X124 = c(2, 5),
  X125 = c(3, 6),
  stringsAsFactors = FALSE
)

核心解决方案

不需要用rbind(它是用来合并行的,和你的需求不匹配),直接针对匹配的数值列做元素级加法即可,有两种实现方式:

方法1:手动指定目标列(列名明确时用)

如果已经清楚要累加的列名,直接指定后执行加法:

# 指定需要累加的列
target_cols <- c("X123", "X124", "X125")
# 把DF1的对应列值加到DF2的每一行
DF2[target_cols] <- DF2[target_cols] + DF1[target_cols]

方法2:自动匹配共享数值列(通用场景)

如果列名不固定,或者需要适配更多列的情况,可以自动找出两个DataFrame共有的数值列再执行累加:

# 找出两个DF共有的列
shared_cols <- intersect(names(DF1), names(DF2))
# 筛选出其中的数值列
numeric_shared_cols <- shared_cols[sapply(DF1[shared_cols], is.numeric)]
# 执行累加
DF2[numeric_shared_cols] <- DF2[numeric_shared_cols] + DF1[numeric_shared_cols]

执行结果

运行上述代码后,DF2的数值列会更新为原数值加上DF1对应列的值:

LocationFipsCodeX123X124X125
USA1001A71012
USA1002B101315

为什么rbind不可行

rbind()的作用是将两个结构相似的DataFrame按行合并,会把DF1作为新的一行添加到DF2中,而不是对现有行的数值列做累加,因此不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:45:31