R 中的模糊匹配玩家名称

Fuzzy Matching player names in R

提问人:Mimi Guo 提问时间:4/13/2023 最后编辑:jpsmithMimi Guo 更新时间:4/13/2023 访问量:99

问:

在 R 中,我有两个数据帧,一个带有全名,一个带有缩写名称,我想 dplyr 将它们连接起来,看看哪个有标志。

但是,很难获得匹配的名字,即使我匹配姓氏,也有相同的姓氏。我在下面给出部分数据作为示例。无论如何,我是否可以高效、正确地连接这两个数据帧而不会出现任何不匹配?

data_1喜欢:

选手
W·福法纳 1
恩戈洛·坎特 1
弗兰克·安吉萨 1

data_2喜欢:

选手
大卫·达特罗·福法纳
韦斯利·福法纳
恩戈洛·坎特
安德烈-弗兰克·赞博·安吉萨

我尝试了姓氏匹配:

data_1 <- data_1 %>%
  mutate(player = sub('.*\\s', '', player)) 

data_2 <- data_2 %>%
  mutate(player = sub('.*\\s', '', player)) 

这可以将“Andre-Frank Zambo Anguissa”与“Frank Anguissa”匹配,但会与 W. Fofana 和 David Datro Fofana 不匹配。

但是,如果我考虑名字,我不知道如何保持“Andre-Frank Zambo Anguissa”和“Frank Anguissa”等情况的匹配。由于这是一个非常独特的姓氏,通过匹配姓氏,我实际上可以得到正确的匹配,如果涉及名字,我认为它不会起作用。有什么建议吗?多谢

我也试过了,但很难选择允许所有正确匹配/加入的。fuzzyjoinmax_dist

R 子字符串 fuzzyjoin 名称匹配

评论

0赞 Jon Spring 4/13/2023
一种可能的方法是使用姓氏(在将姓氏分成每个表中自己的列之后),然后选择一种距离算法,在姓氏匹配项中对最佳候选项进行排序。left_join
0赞 Community 4/13/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。

答: 暂无答案