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