Я использую fuzzyjoin
для пересечения политиков и их регионов:
library(dplyr)
library(fuzzyjoin)
x <- tibble(name = c("Fulvio Rossi Ciocca", "Rigoberto Del Carmen Rojas Sarapura", "Lorena Vergara Bravo", "Lily Perez San Martin"),
activity = c("surgeon", "business", "public administration", "publicist"))
y <- tibble(name = c("Rossi Ciocca Fulvio", "Perez San Martin Lily"), region = c(1,5))
z <- x %>%
stringdist_inner_join(y, max_dist = 10)
В моем примере «Фульвио Росси Чокка» и «Росси Чокка Фульвио» - это одно и то же лицо. Фактически, все данные в моих наборах данных содержат одних и тех же людей, но с вариациями вроде «Леннон Джон» вместо «Джон Леннон».
Я просмотрел fuzzyjoin
документацию, но не нашел способа написать рабочую версию этого псевдокода:
x %>%
fuzzy_join(y, mode = "left", match_fun = "A ~ permutations(A)")
max_dist
до 14 даст вам желаемое совпадение. - person sm925   schedule 02.02.2018