R fuzzy string match para devolver una columna específica basada en una cadena coincidente

Tengo dos grandes conjuntos de datos, uno alrededor de medio millón de registros y el otro alrededor de 70K. Estos conjuntos de datos tienen dirección. Quiero coincidir si alguna de las direcciones en el conjunto de datos más pequeño está presente en el grande. Como se podría imaginar, la dirección puede escribirse de diferentes maneras y en diferentes casos / ortografías, etc. Así que diferentes pisos tienen la misma dirección. Investigué un poco y descubrí el paquete stringdist que se puede usar.

Trabajé un poco y logré obtener la coincidencia más cercana según la distancia. Sin embargo, no puedo devolver las columnas correspondientes para las que coincide la dirección.

A continuación hay una muestra de datos ficticios junto con el código que he creado para explicar la situación.

library(stringdist)
Address1 <- c("786, GALI NO 5, XYZ","rambo, 45, strret 4, atlast, pqr","23/4, 23RD FLOOR, STREET 2, ABC-E, PQR","45-B, GALI NO5, XYZ","HECTIC, 99 STREET, PQR","786, GALI NO 5, XYZ","rambo, 45, strret 4, atlast, pqr")
Year1 <- c(2001:2007)

Address2 <- c("abc, pqr, xyz","786, GALI NO 4 XYZ","45B, GALI NO 5, XYZ","del, 546, strret2, towards east, pqr","23/4, STREET 2, PQR","abc, pqr, xyz","786, GALI NO 4 XYZ","45B, GALI NO 5, XYZ","del, 546, strret2, towards east, pqr","23/4, STREET 2, PQR")
Year2 <- c(2001:2010)

df1 <- data.table(Address1,Year1)
df2 <- data.table(Address2,Year2)
df2[,unique_id := sprintf("%06d", 1:nrow(df2))]

fn_match = function(str, strVec, n){
  strVec[amatch(str, strVec, method = "dl", maxDist=n,useBytes = T)]
}

df1[!is.na(Address1)
    , address_match := 
      fn_match(Address1, df2$Address2,3)
    ]

Esto me devuelve la coincidencia de cadena cerrada basada en la distancia de 3, sin embargo, también quería tener columnas de "Año" y "unique_id" de df2 en df1. Esto me ayudaría a saber con qué fila de datos coincidía la cadena de df2. Así que finalmente quiero saber porcada fila en df1 ¿Cuál fue la coincidencia de armario de df2 en función de la distancia especificada y tiene para las filas coincidentes el específico"Año" y"unique_id" de df2.

Supongo que hay algo que ver con la combinación (combinación izquierda), pero no estoy seguro de cómo puedo combinar mantener los duplicados y asegurarme de que tengo el mismo número de filas que en df1 (conjunto de datos pequeños).

¡Cualquier tipo de solución ayudaría!

Respuestas a la pregunta(2)

Su respuesta a la pregunta