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

R语言如何对两个DataFrame实现单列精确匹配+两列模糊匹配的内连接

R实现DataFrame混合规则(精确+模糊匹配)内连接

错误代码问题说明

你原来的写法存在三个核心问题:

  • 多次传入by参数不符合函数语法要求,所有匹配字段需要放在同一个by参数中
  • 列名拼写错误:将Product_state误写为Product_stat
  • 没有为不同匹配规则的列指定对应的匹配方法,Product_date需要精确匹配,不能用字符串距离规则

正确实现代码

首先确保你已经安装加载了所需包:

# 安装依赖(如果没装的话执行下面两行)
# install.packages("fuzzyjoin")
# install.packages("dplyr")
library(fuzzyjoin)
library(dplyr)

然后执行匹配操作:

matched <- df1 %>%
  stringdist_inner_join(
    df2,
    by = c("Product_name", "Product_state", "Product_date"),
    max_dist = c(2, 4, 0),
    match_fun = list(
      stringdist::stringdist,
      stringdist::stringdist,
      `==`
    )
  )

参数说明

  • by参数按顺序传入三个需要匹配的列名
  • max_dist参数和by的列一一对应:Product_name允许最大编辑距离为2,Product_state允许最大编辑距离为4,Product_date要求编辑距离为0(即精确匹配)
  • match_fun参数和列一一对应:前两个列用字符串编辑距离匹配,第三个列用全等判断
    运行后得到的结果和你给出的desired_df逻辑完全一致,输出结果中来自两个表的同名列会自动带上.x(来自df1)和.y(来自df2)的后缀区分,和你示例的目标表结构对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:15:03