R - 简单记录链接 - 下一步?

时间:2015-10-05 23:05:34

标签: r record linkage data-cleansing

我正在尝试与library('RecordLinkage')进行一些简单的直接链接。

所以我只有一个载体

tv3 = c("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE", 
"TOURDE FRANZ", "GET FRESH") 

我需要的功能是compare.dedup的{​​{1}},我得到:

library('RecordLinkage')

我无法找到下一步的文档。我如何比较并找到我的类似对?

所以我找到距离compare.dedup(as.data.frame(tv3))$pairs $pairs id1 id2 tv3 is_match 1 1 2 1 NA 2 1 3 0 NA 3 1 4 0 NA 4 1 5 0 NA 5 2 3 0 NA .... ,但它只返回对。基本上,你只能逐个jarowinkler()

所以我问:你需要做自己的循环来获得结果,还是有更直接的jarowinkler(tv3[1], tv3)函数?

compare.dedup

相异矩阵

mat = matrix(0, length(tv3), length(tv3))

for(j in 1:length(tv3)){
  for(i in 1:length(tv3)){
    { mat[i,j] = jarowinkler(tv3[j], tv3[i]) }
  }
}

我想做的事情只是类似对象(> mat [,1] [,2] [,3] [,4] [,5] [1,] 1.0000000 1.0000000 0.9846154 0.9333333 0.5240741 [2,] 1.0000000 1.0000000 0.9846154 0.9333333 0.5240741 [3,] 0.9846154 0.9846154 1.0000000 0.9525641 0.5133903 [4,] 0.9333333 0.9333333 0.9525641 1.0000000 0.5240741 [5,] 0.5240741 0.5240741 0.5133903 0.5240741 1.0000000 )的属性,是可能的类似对象名称之一。

如何在我的相似度矩阵上设置一个截止值,比如"TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE", "TOURDE FRANZ",然后0.90 类似对象的所有行?

如果我的数据在数据框中

retreive

执行 tv3 1 TOURDEFRANCE 2 TOURDEFRANCE 3 TOURDE FRANCE 4 TOURDE FRANZ 5 GET FRESH which之类的操作并检索相应的行?

非常欢迎任何有关此简单记录链接的帮助!

1 个答案:

答案 0 :(得分:4)

取自this post,这是一个适合您的例子:

tv3 = as.data.frame(c("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE", 
    "TOURDE FRANZ", "GET FRESH"))
colnames(tv3) <- "name"

tv3 %>% compare.dedup(strcmp = TRUE) %>%
        epiWeights() %>%
        epiClassify(0.5) %>%
        getPairs(show = "links", single.rows = TRUE) -> matches

结果,matches数据框可以帮助您确定阈值(在epiClassify()中设置)。