如何使用R的RecordLinkage包查找记录匹配?

时间:2016-06-02 10:52:29

标签: r duplicates record linkage data-linking

一般来说数据链接相对较新,特别是R RecordLinkage package。我有以下数据:

require(RecordLinkage)
library(RCurl)

dss_member <- read.csv(text = getURL("https://raw.githubusercontent.com/kilimba/data/master/dss_member.csv"),
                       stringsAsFactors = F)
dss_member$id <- NULL
patient <- read.csv(text = getURL("https://raw.githubusercontent.com/kilimba/data/master/patient.csv"),
                    stringsAsFactors = F)
patient$id <- NULL

rpairs <- compare.linkage(patient,dss_member)

rpairs$pairs

rpairs <- epiWeights(rpairs) 

summary(rpairs)

如您所见,我有两个数据框,dss_member(11行)和patient(5行)。我已经插入了一行,其中应该理论上绝对是一个链接,用户James Earl Jones。但是我有两个问题。

  1. rpairs$pairs会产生输出,其中最后一列is_match始终显示为NA,即使我确定两个数据集中至少有一行相同。这是什么意思?这与another SO question有关,尚未得到解答。

  2. rpairs <- epiWeights(rpairs)

    summary(rpairs)

  3. 给出如下结果:

    Linkage Data Set
    
    5 records in data set 1 
    11 records in data set 2 
    55 record pairs 
    
    0 matches
    0 non-matches
    55 pairs with unknown status
    
    
    Weight distribution:
    
      [0,0.2] (0.2,0.4] (0.4,0.6] (0.6,0.8]   (0.8,1] 
           47         1         3         2         2 
    

    (a)为什么它显示0场比赛和0场不比赛,当肯定至少在比赛时(James Earl Jones)

    (b)函数identity中的compare.linkage()参数是可选的吗?如果是这样的话,当你把它放在外面时会发生什么呢?

    (c)即使没有“黄金标准”来执行记录链接,并且记录链接评估,是否可以使用此包?

    亲切的问候, Tumaini

1 个答案:

答案 0 :(得分:0)

Tumaini,

您需要区分真实状态(虚假或真实)和分类(非链接,可能或链接)。见作者&#39; R Journal 2/2(2010)中的文章,包装手册和作者&#39;在此回复:R RecordLinkage Identity

直接回答您的问题:

(a)输出显示&#34; 0匹配&#34;和&#34; 0不匹配&#34;因为你在compare.linkage()中省略了identity1和identity2参数。

(b)是的,compare.linkage()中的identity1和identitity2参数是可选的。如果省略标识参数,则忽略真实匹配状态。如果正确指定了标识参数,则使用真正的匹配状态。

(c)我不确定你的意思是&#34;记录联动&#34;与#34;记录联系评估&#34;。记录链接可以被理解为分类问题,其中比较模式作为输入并且匹配状态作为输出。

以下是您可能需要尝试的四步解决方案:

1)运行compare.linkage ,不带身份参数。

2)从记录对中创建两个标识变量

3)将两个身份变量转换为身份向量

4)再次运行compare.linkage,但带有标识参数。

Anders Alexandersson andersalex@gmail.com