R - Ligação simples de registros - o próximo passo?
Estou tentando fazer uma ligação direta simples com olibrary('RecordLinkage')
.
Então eu só tenho um vetor
tv3 = c("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE",
"TOURDE FRANZ", "GET FRESH")
A função que eu preciso écompare.dedup
dolibrary('RecordLinkage')
e eu recebo:
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
....
Tenho problemas para encontrar documentação para a próxima etapa. Como faço para comparar e encontrar meu par semelhante?
Então eu achei a distânciajarowinkler()
mas retorna apenas pares. Basicamente, você só pode fazerjarowinkler(tv3[1], tv3)
um por um.
Estou perguntando: você precisa fazer seu próprio loop para obter o resultado ou existe uma maneira mais direta decompare.dedup
função?
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]) }
}
}
A matriz de dissimilaridade
> 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
O que eu quero fazer é simplesmente atributo parasemelhante objeto ("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE", "TOURDE FRANZ"
), um dos possíveissemelhante nomes de objetos.
Como eu poderia definir um ponto de corte, digamos0.90
, na minha matriz de dissimilaridade e depoisretreive
todas as linhas dosemelhante objeto?
Se meus dados estiverem em um quadro de dados
tv3
1 TOURDEFRANCE
2 TOURDEFRANCE
3 TOURDE FRANCE
4 TOURDE FRANZ
5 GET FRESH
Faça algo comowhich
cut-off > 0.90
e recuperar as linhas correspondentes?
Qualquer ajuda para esta simples ligação de registro é muito bem-vinda!