代码之家  ›  专栏  ›  技术社区  ›  Ahmad Mobin

R中两个数据集的相似匹配/部分字符串匹配

  •  0
  • Ahmad Mobin  · 技术社区  · 7 年前

    我有一个数据集,有超过100000个观测值( 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\U名称 可能会有很多变化

    我有一张4000人左右的名单( df2$ListofNames )我想查看是否可以在df1$HCP\U名称中找到。*请注意,这两个列表并不相等!

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

    我想生成一个单独的数据框,告诉我df2$ListofNames中的元素与df1$HCP\U名称匹配的概率。之后,我的计划是手动检查极有可能的匹配项,看看它们是否是匹配项。

    注意,由于df1$HCP\U名称是一个开放的文本字段,理论上有人可以先输入他们的姓,然后输入他们的姓。然而,df2$ListofNames对每个人都有一个唯一的条目

    1 回复  |  直到 7 年前
        1
  •  0
  •   Ahmad Mobin    7 年前

    好吧,我找到了一个对我有用的答案:

    我把 df1$HCP_Names 名字来自 df2$ListofNames 并入一列 Name_List1 并运行以下代码:

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

    它产生以下输出:

    id1 id2 HCP\u名称是否匹配

    907 4471 0.962 NA

    然后我手动检查每个“高概率”匹配。

    希望这对其他人有帮助!