R

时间:2018-03-21 14:48:00

标签: r string text

我的数据集有超过100,000个观察值(df1)。有一个打开的文本字段可输入您的姓名:HCP_Names

df1$HCP_Names<- c("Ahmaaad M", "Ahmad Mobin", "Ahmed Mobin" "Dr.Ahmad" "A.Mobin" , "Ahmad.M" , "AhmadMursalinM", "MursalinModin", "Mobin", "Ahmad", "Vince", "Jim Smith" , "Mario Gomez", "Lisa Robin", "Brown Jim") 

基本上HCP_Names可能存在很多变化

我有一个名为4,000(df2$ListofNames)的名单,我想查看是否可以在df1 $ HCP_Names中找到它。 *请注意,这两个列表不相等!

df2$ListofNames<- c("Ahmad Mobin" , "Tanya Singh", "Jim Brown", "Vince Johnson", "Stacey Seguin", "Tim Black", "Ron James", "Lisa Robin")

我想生成一个单独的数据框,告诉我df2 $ ListofNames中的元素与df1 $ HCP_Names匹配的概率。之后计划是我手动检查极有可能的匹配,看看实际上他们是否匹配(或不匹配)。

PS。注意,因为df1 $ HCP_Names是一个开放文本字段,理论上可以先输入他们的姓氏,然后再输入他们的姓氏。但是,df2 $ ListofNames为每个人都有一个唯一的条目

1 个答案:

答案 0 :(得分:0)

好的所以我找到了一个对我有用的答案:

我将df1$HCP_Names中的名称与df2$ListofNames中的名称合并为一列Name_List1并运行以下代码:

require(RecordLinkage)
rec.pair<- compare.dedup(Names_List1,
                         strcmp = 1,
                         strcmpfun=levenshteinSim) 

它产生这个输出:

id1 id2 HCP_Names is_match

907 4471 0.962 NA

然后我手动检查每个&#34;高概率&#34;匹配。

希望这有助于那里的人!