Sac*_*amp 28 regex string r r-faq
我有一堆名字,我想获得独特的名字.但是,由于拼写错误和数据不一致,名称可能写错了.我正在寻找一种方法来检查字符串向量,如果其中两个是similair.
例如:
pres <- c(" Obama, B.","Bush, G.W.","Obama, B.H.","Clinton, W.J.")
Run Code Online (Sandbox Code Playgroud)
我想找到它" Obama, B."
并且"Obama, B.H."
非常相似.有没有办法做到这一点?
Jor*_*eys 30
这可以基于例如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
Run Code Online (Sandbox Code Playgroud)
Cha*_*ase 17
也许agrep
是你想要的?它使用Levenshtein编辑距离搜索近似匹配.
lapply(pres, agrep, pres, value = TRUE)
[[1]]
[1] " Obama, B." "Obama, B.H."
[[2]]
[1] "Bush, G.W."
[[3]]
[1] " Obama, B." "Obama, B.H."
[[4]]
[1] "Clinton, W.J."
Run Code Online (Sandbox Code Playgroud)