Без данных примера трудно знать наверняка, но я могу воспроизвести ошибку, когда столбец с именами в b и / или a является фактором.
Одним из решений является использование функции stringdist
из пакета stringdist
:
a <- data.frame(names = c("foo", "bar", "aargh"), stringsAsFactors = FALSE)
b <- data.frame(wholename= c("foob", "baar", "flierp"), stringsAsFactors = FALSE)
lookup <- expand.grid(target = a$names, source = b$wholename, stringsAsFactors = FALSE)
y <-lookup %>% group_by(target) %>%
mutate(match_score = stringdist::stringdist(target, source, method = "jw")) %>%
summarise(match = match_score[which.max(match_score)], matched_to =
source[which.max(match_score)]) %>%
inner_join(b, by = c("matched_to" = "wholename"))
Другим решением является использование пакета reclin
(автором которого я являюсь):
library(reclin)
names(b) <- "names"
pair_blocking(a, b) %>%
compare_pairs(by = c("names"), default_comparator = jaro_winkler()) %>%
select_n_to_m(weight = "names") %>%
link()