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

R语言如何基于ID与CT日期两个条件合并两个数据框的指定列

R语言双主键匹配补充数据集实现方案

你可以使用dplyr的左连接+缺失值合并函数实现需求,核心逻辑是保留第一份数据集的所有行结构,按ID和date_ct两个匹配项关联第二份数据集的补充值,再合并重叠字段的取值:

tidyverse实现代码(适配你已加载的包环境)

df3 <- df1 %>%
  # 双主键左连接,保留df1的全部4行数据,匹配到的df2数据自动追加为新列
  left_join(df2, by = c("ID", "date_ct"), suffix = c("", "_supp")) %>%
  # 合并重叠结果列:优先保留df1原有值,df1为NA时取df2的补充值
  mutate(
    legs_mass = coalesce(legs_mass, legs_mass_supp),
    total_mass = coalesce(total_mass, total_mass_supp)
  ) %>%
  # 清理临时生成的带后缀的补充列
  select(-ends_with("_supp"))

运行后输出的df3完全符合你给出的目标结构,df2独有的ctscan_label字段会自动保留在结果中,无需额外配置。如果不需要该字段,可在最后一步的select中补充-ctscan_label删除。

原方法失效原因说明

  • merge默认没有自动合并重叠列的逻辑,直接调用会生成带.x/.y后缀的两列重复字段,需要手动合并
  • rbind/bind_rows是用于纵向堆叠结构相同的数据集的函数,不适用于这种按主键关联补充字段的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 15:57:01