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

R语言中如何用另一个数据框的值更新数据框指定列

R数据框按主键匹配更新实现方案

最优方案:dplyr::rows_update

该函数是dplyr 1.0.0及以上版本专门为「匹配主键、更新对应列」场景设计的原生功能,代码简洁易读,无需手动处理匹配逻辑:

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

# 按St_Name匹配,用df2的值更新df1的对应列
df1 <- rows_update(df1, df2, by = "St_Name")

运行后直接得到预期结果,仅匹配到的KS行的I1、I3列会被覆盖,其余行和列完全保持不变。

无额外依赖的Base R方案

如果不想加载第三方包,可以用基础匹配逻辑实现:

# 找到df2的行在df1中对应的位置
match_pos <- match(df2$St_Name, df1$St_Name)
# 提取两个数据框都存在、且需要更新的非主键列
update_cols <- setdiff(intersect(names(df1), names(df2)), "St_Name")
# 批量赋值更新
df1[match_pos, update_cols] <- df2[, update_cols]

这个方案兼容性更强,无需安装任何包即可运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:06:04