将 Id 分配给新表中的模糊匹配名称 - R

Assign Id to fuzzy match name in new table - R

提问人:Ben Blackburn 提问时间:8/22/2023 最后编辑:MarkBen Blackburn 更新时间:8/22/2023 访问量:32

问:

我有两张桌子。表 1 有一个 id 列和一个 full_name 列。表 2 只有一个全名列,但名称是近似匹配项,而不是完全匹配项。我想将 id 列应用于第二个表,以便 id 应用于正确的近似匹配名称。我的表格如下所示:

df1 <- read.table(text="
id  full_name
1   'Tom Jones'
2   'Jim James'", header = TRUE)

df2 <- read.table(text="
full_name
'Tom Jones Jr.'
'Jim James Ii'", header = TRUE)

我希望表 2 的结尾是这样的:

编号 full_name
1 小汤姆·琼斯
2 吉姆·詹姆斯二世

我已经尝试过stringdist_join并希望理想地在 dplyr 中这样做,但我不确定这是否可能。任何帮助将不胜感激。谢谢。

r dplyr 模糊连接

评论

0赞 Mark 8/22/2023
嗨,本!欢迎使用 StackOverflow。 工程!但根据我的经验,fuzzyjoin 包函数非常喜怒无常,无法在超过几行上工作。所以YMMVstringdist_left_join(df1, df2, by = "full_name", method = "jw", max_dist = 0.3)
0赞 Ben Blackburn 8/22/2023
马克!谢谢!这行得通!我试图保持我的代码干净。我将如何在 dplyr 突变 df2 中做到这一点,并且只通过 pid 传输而不是来自 df1 的所有信息。我知道我可以在 dplyr 之外执行此操作并删除不需要的行,但如果可能的话,如果我能让它尽可能干净,那就太好了。谢谢!
0赞 Mark 8/22/2023
我想你可以选择相关的列 Ben!我会发布一个答案,但这不是我的专业领域,而且有六种不同的加入stringdist_left_join方法,老实说,我无法告诉你哪一种是最好的!
0赞 Jon Spring 8/23/2023
stringdist_left_join(df2, select(df1, full_name, id), by = "full_name", method = "jw", max_dist = 0.3)将获取每一行并将其链接到所有匹配的 full_name+id ,而不引入任何其他列。df2df1

答: 暂无答案