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

如何用df_new更新df_old同名列值并保留非共享列数据

用df_new更新df_old同名列并保留非共享列的R实现

针对需求——保留df_old的非共享列原值,用df_new更新两者共有的列,同时适配大量列的场景,可以用以下简单高效的方法实现:

示例数据

先还原你的示例数据:

# 构建旧数据框
avg_sleep <- c(21, 18, 17, 10)
rating <- 1:4
other <- 5:8
df_old <- data.frame(rating, avg_sleep, other)

# 构建新数据框
avg_sleep <- c(16,15,18,19)
rating <- 2:5
df_new <- data.frame(rating, avg_sleep)

解决方案(Base R)

这种方法无需手动指定列名,自动适配任意数量的共享列:

# 提取两个数据框的共享列名
shared_columns <- intersect(names(df_old), names(df_new))

# 用df_new的共享列值覆盖df_old的对应列
df_old[shared_columns] <- df_new[shared_columns]

执行后查看df_old的结果:

rating avg_sleep other
1      2        16     5
2      3        15     6
3      4        18     7
4      5        19     8

方法说明

  • intersect(names(df_old), names(df_new)):自动找出两个数据框的共同列名,不管有多少列都能精准匹配,避免手动输入的繁琐和错误
  • df_old[shared_columns] <- df_new[shared_columns]:直接对df_old的共享列进行赋值,非共享列(如示例中的other)会完全保留原有值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:36:07