在R的RecordLinkage程序包中使用RLBigData类时输出错误

时间:2019-03-24 23:34:03

标签: r bigdata record-linkage

使用R包RecordLinkage时,epiClassify()emClassify()函数(可以在RLBigDataLinkage类对象上运行)之后的某些输出将输出错误。当我使用为较小的数据比较而设计的功能时,例如compare.linkage(),看不到这些错误。可以在软件包here中找到描述此内容的文档。

我的总体目标是“模糊匹配”两个表之间的数据;一旦我知道基于其他变量的表之间哪些行相似,就可以使用索引从一个表中的列中获取唯一ID,而另一表中缺少该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”的对象的名称为“ pairs”的空位

  • 尝试使用summary(result)来获取摘要:dbGetQuery中的错误(object @ con,“从data1中选择count()”): 类“ RLBigDataLinkage”的此对象的名称“ con”没有插槽*

  • 尝试使用getTable(result)来获取比较表: table.ff(object @ data @ pairs $ is_match,object @ prediction,useNA =“ ifany”)中的错误: 当前仅允许使用vmodes整数-您确定...仅包含因子或整数吗?

  • 在第一次运行RLBigDataLinkage()函数时也会引发警告:警告消息: 1:在result_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)

我不确定为什么在第二种情况下代码会吐出这些错误。我想先对小型数据集上的代码进行故障排除,然后再移至较大的数据集。如果有人能阐明此程序包输出的这些错误和警告,我将不胜感激。

0 个答案:

没有答案