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

R语言匹配两个数据框多列并为首个数据框新增列的实现问题

多字段非同名匹配新增列实现方案

Python(Pandas)实现

核心逻辑是用左连接保留df1全部行,指定两组不同名字段为匹配键,匹配后清理多余字段、填充未匹配值即可。

import pandas as pd

# 执行左连接匹配
df1 = df1.merge(
    # 仅提取df2参与匹配和需要取值的列,避免产生多余无关列
    df2[["First", "AgeNum", "BornPlace", "Weight"]],
    how="left",
    # 指定左右表对应匹配列
    left_on=["Name", "Age", "Country"],
    right_on=["First", "AgeNum", "BornPlace"]
)

# 删除df2带来的多余匹配列,未匹配到的Weight值填充为'-'
df1 = df1.drop(columns=["First", "AgeNum", "BornPlace"]).fillna({"Weight": "-"})

R(dplyr)实现

用dplyr的left_join直接指定不同名列的匹配规则即可:

library(dplyr)

df1 <- df1 %>%
  left_join(
    df2 %>% select(First, AgeNum, BornPlace, Weight),
    # 指定不同名匹配列的对应关系
    by = c("Name" = "First", "Age" = "AgeNum", "Country" = "BornPlace")
  ) %>%
  # 未匹配到的空值替换为'-'
  mutate(Weight = coalesce(as.character(Weight), "-"))

注意事项

  • 匹配前请确认两组匹配列的数据类型一致,比如df1$Age为数值型、df2$AgeNum为字符串型会导致匹配失败,需提前统一类型
  • 如果df2存在多个相同匹配键的行,左连接会生成重复行,可提前对df2按匹配键去重后再关联

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:05