Calcular la distancia de Hamming por parejas entre todas las filas de dos matrices enteras / marcos de datos
Tengo dos marcos de datos,df1
con datos de referencia ydf2
con nuevos datos Para cada fila endf2
, Necesito encontrar la mejor (y la segunda mejor) fila coincidente paradf1
en términos de distancia de hamming.
solíae1071
paquete para calcular la distancia de hamming. Distancia de Hamming entre dos vectoresx
yy
se puede calcular como por ejemplo:
x <- c(356739, 324074, 904133, 1025460, 433677, 110525, 576942, 526518, 299386,
92497, 977385, 27563, 429551, 307757, 267970, 181157, 3796, 679012, 711274,
24197, 610187, 402471, 157122, 866381, 582868, 878)
y <- c(356739, 324042, 904133, 959893, 433677, 110269, 576942, 2230, 267130,
92496, 960747, 28587, 429551, 438825, 267970, 181157, 36564, 677220,
711274, 24485, 610187, 404519, 157122, 866413, 718036, 876)
xm <- sapply(x, intToBits)
ym <- sapply(y, intToBits)
distance <- sum(sapply(1:ncol(xm), function(i) hamming.distance(xm[,i], ym[,i])))
y la distancia resultante es 25. Sin embargo, necesito hacer esto para todas las filas dedf1
ydf2
. Un método trivial toma un nido de doble bucle y se ve terriblemente lento.
¿Alguna idea de cómo hacer esto de manera más eficiente? Al final necesito unirme adf2
:
df1
eso da la distancia más baja;una columna con la distancia más baja;una columna con el id. de fila dedf1
eso da la 2da distancia más baja;una columna con la segunda distancia más baja.Gracias.