agrep
ほんの少しのデータしかない場合は、間違いなく迅速かつ簡単な基本 R ソリューションです。これが大規模なデータ フレームのおもちゃの例にすぎない場合は、より耐久性のあるツールに興味があるかもしれません。この 1 か月で、@PaulHiemstra が指摘したレーベンシュタイン距離 (これらの別の質問でも) について学んだことで、RecordLinkageパッケージにたどり着きました。ビネットは、特に複数のフィールドにわたる「ソフト」またはファジーな一致の例をもっと欲しがっていますが、質問に対する基本的な答えは次のようになります。
library(RecordLinkage)
col <- data.frame(names1 = c("John Collingson","J Collingson","Dummy Name1","Dummy Name2"))
inputText <- data.frame(names2 = c("J Collingson"))
g1 <- compare.linkage(inputText, col, strcmp = T)
g2 <- epiWeights(g1)
getPairs(g2, min.weight=0.6)
# id names2 Weight
# 1 1 J Collingson
# 2 2 J Collingson 1.000
# 3
# 4 1 J Collingson
# 5 1 John Collingson 0.815
inputText2 <- data.frame(names2 = c("Jon Collinson"))
g1 <- compare.linkage(inputText2, col, strcmp = T)
g2 <- epiWeights(g1)
getPairs(g2, min.weight=0.6)
# id names2 Weight
# 1 1 Jon Collinson
# 2 1 John Collingson 0.9644444
# 3
# 4 1 Jon Collinson
# 5 2 J Collingson 0.7924825
compare.linkage() または compare.dedup() から始めてください。大きなデータ セットの場合は RLBigDataLinkage() または RLBigDataDedup() です。お役に立てれば。