首页 > 解决方案 > 一列的模糊匹配左连接,但其余列需要完全匹配

问题描述

我正在尝试对以下两个数据帧执行 left_join:

df1 = data.frame(
  word = c("column", "maximum", "run", "distance", "string"),
  type = c("noun", "noun", "verb", "noin", "noun")
)

df2 = data.frame(
  word = c("col", "maximim", "rim", "distance", "string"),
  type = c("noun", "noun", "verb", "noun", "noun"),
  metadata = c(1, 2, 2, 1, 2)
)

fuzzyjoin::stringdist_left_join(df1, df2, by = c("word", "type"), method = "hamming", max_dist = 1)

这允许对列“word”和“type”进行模糊匹配,最多允许一个匹配项替换。但是,我想只允许在“word”列上进行一次替换,并要求“type”列完全匹配。

也许另一种更一般的方式来问这个问题是如何为正在执行连接的不同列设置不同的距离阈值。

但是,在某些列需要完全匹配的情况下,只需要它比在距离为 0 时计算距离和阈值更有效。

什么是只允许在单个列上进行模糊匹配而在其余列上进行精确匹配的最有效方法?

在每列的不同阈值下允许模糊匹配的最佳方法是什么?作为奖励,在某些列上允许不同的阈值以及要求对不同的列集进行精确匹配怎么样?

谢谢,杰克

标签: rdplyrfuzzy-search

解决方案


推荐阅读