1

我希望能够模糊匹配一列并精确匹配另一列。

假设我 df1 看起来像这样:

在此处输入图像描述

df2 看起来像这样:

在此处输入图像描述

我想模糊匹配“名称”但精确匹配“年份”。所以“Ashley”和“Ashlee”将是匹配的。这是我到目前为止所拥有的:

res <- fuzzy_left_join(
  df,
  df2,
  by=c("Year","Name"),
  list(`==`, function(x,y) stringdist(tolower(x), tolower(y), method="lv") <= 3)
)
res %>% 
  select(Year = Year.x, everything(), - Year.y)

不过,它似乎过度匹配。不知道发生了什么。

4

1 回答 1

0

看来您走在正确的轨道上(如果没有您的数据或您向我们展示您的结果,很难判断!)

模糊连接将提供字符串距离 <=3 的所有答案,这可能是您描述的“过度匹配”。

您可以使用 %>% group_by(Year,Name) %>% slice_min(dist) 根据距离获得最佳答案。

于 2020-10-20T07:31:41.613 回答