使用R包时 RecordLinkage
以下是一些产出 epiClassify()
或 emClassify()
函数(可以在 RLBigDataLinkage
类对象)会输出错误。当我使用为较小的数据比较而设计的函数时,这些错误是看不到的,例如 compare.linkage()
. 描述这一点的文档可以在软件包vignettes中找到。此处.
我的总体目标是 "模糊匹配 "两张表之间的数据;一旦我知道基于其他变量的表之间有哪些行是相似的,我就可以使用索引从一张表中的列中抓取另一张表中缺少的唯一ID。
数据: 这是一些用于重现错误的虚拟数据... ...
library(tibble)
table1 <- tibble(col1 = c("JIMMY", "SARA", "AYIL", "JIM", "JOHN"),
col2 = c("OHEARN", "HANDLE", "HASE", "JHORN", ""),
col3 = c("jdt322", "jdb122", "", "ddd532", "ddd444"))
table2 <- tibble(col1 = c("JIMMY", "SARAH", "SARA", "AYIL", "JIM", "JOHN", "timm"),
col2 = c("OHEARN", "HAND","H", "HASE", "JORN", "", ""),
col3 = c("jdt322", "jda122", "jdb112", "", "ddd532", "ddd444", "ddd322"))
当我在函数中使用上述数据进行较小范围的比较时,它工作正常,没有错误。
mypairs <- RecordLinkage::compare.linkage(table1, table2, strcmp = T)
mypairs_weights <- emWeights(mypairs)
result <- emClassify(mypairs_weights, threshold.lower = 1)
getTable(result)
summary(result)
getPairs(result, min.weight = 1)
但是,当我使用 RLBigData
类(如下面的代码),当我试图访问对象时,我得到了错误。
我试图访问对象 result
之后 emClassify()
: 在nrow(object@pairs)中出错:"RLResult "类的这个对象没有名称 "pair "的槽。
试图抓住摘要与 summary(result)
: 在dbGetQuery(object@con, "select count()from data1") : "RLBigDataLinkage "类的这个对象没有名字为 "con "的槽位*。
试图抓住对比表与 getTable(result)
: table.ff(object@data@pairs$is_match, object@prediction, useNA = "ifany")中出错:当前只允许vmodes整数--你确定......只包含因子或整数?
当第一次运行的时候,也会抛出警告。RLBigDataLinkage()
函数。警告信息:1: 在res_fetch(res@ptr, n = n) :不需要为语句调用dbFetch(),只需要为查询调用。
以下代码应该可以重现这些错误
mypairs <- RLBigDataLinkage(table1, table2,
strcmp = T,
strcmpfun = "jarowinkler")
mypairs_weights <- emWeights(mypairs)
result <- emClassify(mypairs_weights, 0.6)
result
getTable(result)
summary(result)
getPairs(result, min.weight = 0.5)
我不确定为什么在第二种情况下代码会吐出这些错误。我想先在一个小数据集上解决代码问题,然后再转向更大的数据集。如果有人能对这个包输出的这些错误和警告作出说明,我会非常感激。