繁体   English   中英

如何在 dataframe 中进行一次模糊匹配和一次精确匹配?

[英]How do I do one fuzzy and one exact match in a dataframe?

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

假设我 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)

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM