我正在使用R中的RecordLinkage Library.我有一个带有id,name,phone,mail的数据框
我的代码看起来像这样:
ids = data$id
pairs = compare.dedup(data, identity=ids, blockfld=as.list(2,3,4))
Run Code Online (Sandbox Code Playgroud)
问题是我的结果输出中的id不同,所以如果我有这些数据:
id Name Phone Mail
233 Nathali 2222 nathali@dd.com
435 Nathali 2222
553 Jean 3444 jean@dd.com
Run Code Online (Sandbox Code Playgroud)
在我的结果输出中,我会有类似的东西
id1 id2
1 2
Run Code Online (Sandbox Code Playgroud)
代替
id1 id2
233 435
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法保留id而不是索引,或者有人可以解释我的身份参数.
谢谢
小智 5
恒等向量告诉 getPairs 方法哪些输入记录属于同一实体。它实际上包含您通常希望从记录链接中获得的信息,即您有几个记录,但事先不知道其中哪些属于在一起。但是,当您使用训练集来校准方法或想要评估记录链接方法的准确性(该包主要是为此目的而编写的)时,您需要从已经进行重复数据删除或链接的数据集开始。
在您的示例中,前两行(id 233、435)显然表示同一个人,第三行表示不同的人。因此,一个有意义的恒等向量是:
c(1,1,2)
Run Code Online (Sandbox Code Playgroud)
但也可能是:
c(42,42,128)
Run Code Online (Sandbox Code Playgroud)
只需确保恒等向量在相应表行保存匹配记录的位置具有完全相同的值(向量索引 = 行索引)。
关于如何在结果中显示 id 的问题:您可以获取完整的记录对,包括所有数据字段(有关更多详细信息,请参阅文档):
getPairs(pairs)
Run Code Online (Sandbox Code Playgroud)
可能有更好的方法来获取原始 ID,具体取决于您进一步处理记录对的方式(例如运行分类算法)。如果您需要更多建议,请扩展您的示例。
ps:我是包的作者之一。我最近才意识到有人在 Stack Overflow 上询问有关该软件包的问题,因此请原谅,有几个问题长期以来一直没有得到解答。我将寻找一种方式来获得有关此处发布的新问题的通知,但我还想提一下,人们可以通过包裹信息中列出的电子邮件地址之一直接与我们联系。