Función R para que una función se repita en función de los valores de columna

Tengo un gran conjunto de datos para el que necesito hacer una coincidencia de cadenas. Tengo algunas publicaciones muy útiles de este sitio y, al referirme a ellas, he creado una función para hacer coincidir las cadenas de mi conjunto de datos. Estoy pegando mis datos de muestra y mi código.

DATA DE MUESTRA

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")
AREACODE <- c('10','10','14','20','30')
Year1 <- c(2001:2005)

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)
AREA_CODE <- c('10','10','10','20','30','40','50','61','64', '99')

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

CÓDIGO

fn.fuzzymatch<-function(dat1,dat2,string1,string2,meth){

  dist.name<-stringdistmatrix(dat1[[string1]],dat2[[string2]],method = meth)

  min.name<-apply(dist.name, 1, min)

  match.s1.s2<-NULL
  for(i in 1:nrow(dist.name))
  {
    s2.i<-match(min.name[i],dist.name[i,])
    s1.i<-i
    match.s1.s2<-rbind(data.frame(s1_row=s1.i,s2_row=s2.i,s1name=dat1[s1.i,][[string1]],s2name=dat2[s2.i,][[string2]], dist=min.name[i]),match.s1.s2)
  }
  output <- (match.s1.s2)[order(match.s1.s2$s1_row),]
  return(output)
}


match_50 <- fn.fuzzymatch(data1,data2,"Address1","Address2","dl")

Esto funciona bien para los datos a nivel de país, pero luego tengo varios archivos de datos a nivel de región y cada región tiene múltiples áreas. El código de área para cada región está disponible enCODIGO DE AREA variable en data1 yCODIGO DE AREA variable en datos2. Quiero actualizar mi función para que

la coincidencia de cadenas se realiza para cada área y la salida tiene ese código de áreala salida se devuelve para cada región consolidada para todos los códigos de área en esa región.

Estaba tratando de usar dividir y convertir los archivos de datos en lista y usar y luego usar rbindlist para combinarlos, pero no pude tener éxito y he estado recibiendo diferentes tipos de errores. Estoy seguro de que hay una manera de hacerlo, pero no puedo conseguirlo. Espero poder tener algunas sugerencias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta