R: enlace de grabación simple: ¿el siguiente paso?
Estoy tratando de hacer un enlace directo simple con ellibrary('RecordLinkage')
.
Entonces solo tengo un vector
tv3 = c("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE",
"TOURDE FRANZ", "GET FRESH")
La función que necesito escompare.dedup
dellibrary('RecordLinkage')
y obtengo:
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
....
Tengo problemas para encontrar documentación para el siguiente paso. ¿Cómo puedo comparar y encontrar mi par similar?
Entonces encontré la distanciajarowinkler()
pero solo devuelve pares. Básicamente, solo puedes hacerjarowinkler(tv3[1], tv3)
uno a uno.
Entonces, pregunto: ¿necesita hacer su propio ciclo para obtener su resultado o hay una forma más directa decompare.dedup
función?
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]) }
}
}
La matriz de disimilitud
> 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
Lo que quiero hacer es simplemente atributo desimilar objeto ("TOURDEFRANCE", 'TOURDEFRANCE', "TOURDE FRANCE", "TOURDE FRANZ"
), uno de los posiblessimilar nombres de objeto
¿Cómo podría establecer un límite, digamos0.90
, en mi matriz de disimilitud y luegoretreive
todas las filas de lasimilar objeto?
Si mis datos están en un marco de datos
tv3
1 TOURDEFRANCE
2 TOURDEFRANCE
3 TOURDE FRANCE
4 TOURDE FRANZ
5 GET FRESH
Hacer algo comowhich
cut-off > 0.90
y retreive las filas correspondientes?
Cualquier ayuda para este simple Link Link es muy bienvenida.