我有一堆名字,我想获得唯一的名字。但是,由于拼写错误和数据不一致,名称可能会写错。我正在寻找一种方法来检查字符串 vector 中是否有两个是相似的。
例如:
pres <- c(" Obama, B.","Bush, G.W.","Obama, B.H.","Clinton, W.J.")
我想发现
" Obama, B."
和"Obama, B.H."
非常相似。有没有办法做到这一点? 最佳答案
这可以基于例如Levenshtein距离来完成。在不同的程序包中有多种实现。在以下问题的答案中可以找到一些解决方案和软件包:
但是,大多数时候
agrep
会做你想要的:> sapply(pres,agrep,pres)
$` Obama, B.`
[1] 1 3
$`Bush, G.W.`
[1] 2
$`Obama, B.H.`
[1] 1 3
$`Clinton, W.J.`
[1] 4