У меня очень большой набор данных, содержащий примерно 2 миллиона наблюдений (main
). В наборе данных есть столбец «name», который очень шумный. У меня есть dictionary
набор данных со списком всех правильных имен (6500 наблюдений). Я хотел бы иметь возможность повторять каждое из 2 миллионов наблюдений в наборе данных main
и удалять все наблюдения, которые не соответствуют нечеткому совпадению ни одного из правильных имен, перечисленных в dictionary
.
Я испробовал следующие подходы:
library(fuzzyjoin)
stringdist_left_join(main, dictionary, by = c("name" = "correct_name"), max_dist = 1)
Но из-за этого возникла ошибка:
Ошибка в stri_length (строка): длинные векторы еще не поддерживаются : stri_length. cpp: 96
Я также пробовал:
correct_names <- paste(dictionary$correct_name, collapse = "|")
agrep(correct_names, main$name)
, который выдает следующую ошибку:
Ошибка в agrep ( правильные имена, основное $ имя): ошибка regcomp: «Недостаточно памяти»
Существует ли подход к нечеткому сопоставлению такого рода, который работает с большими наборами данных?