![](/img/trans.png)
[英]R: How do I merge data frames based on one exact match and one nearest (date) match?
[英]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.