приблизительное сопоставление символов с использованием R
У меня есть два файла данных. Один из файлов содержит только один столбец с названием компании (обычно это больница), а другой содержит список компаний с соответствующими адресами. Проблема в том, что названия компаний не совсем совпадают. Как я могу их приблизительно сопоставить?
> dput(head(HOSPITALS[130:140,], 10))
Я хотел бы получить один файл данных, в котором company
совпадает с адресом, если он доступен в adress
1 ответ
Проверьте fuzzyjoin
пакет и stringdist_join
функции.
Вот отправная точка. В ваших данных примераignore_case = TRUE
решает проблему соответствия. В зависимости от того, как выглядят полные данные, вам придется поэкспериментировать с аргументами (например, max_dist) и, возможно, фильтровать результат, пока не достигнете желаемого.
library(dplyr)
library(fuzzyjoin)
HOSPITALS %>%
stringdist_left_join(GH_MY,
by = c("hospital" = "hospital_name"),
ignore_case = TRUE,
max_dist = 2,
distance_col = "dist")
Результат:
# A tibble: 10 x 6
hospital hospital_name adress district town dist
<chr> <chr> <chr> <chr> <chr> <dbl>
1 HOSPITAL PAPAR Hospital Papar Peti Surat No. 6, Papar Sabah 0
2 HOSPITAL PARIT BUNT~ Hospital Parit ~ Jalan Sempadan Parit Bun~ Perak 0
3 HOSPITAL PEKAN Hospital Pekan 26600 Pekan Pekan Pahang 0
4 HOSPITAL PENAWAR SD~ NA NA NA NA NA
5 HOSPITAL PORT DICKS~ Hospital Port D~ KM 11, Jalan Pantai Port Dick~ Negeri ~ 0
6 HOSPITAL PULAU PINA~ Hospital Pulau ~ Jalan Residensi Pulau Pin~ Pulau P~ 0
7 HOSPITAL PUSRAWI SD~ NA NA NA NA NA
8 HOSPITAL PUSRAWI SM~ NA NA NA NA NA
9 HOSPITAL PUTRAJAYA Hospital Putraj~ Pusat Pentadbiran Ker~ Putrajaya WP Putr~ 0
10 HOSPITAL QUEEN ELIZ~ NA NA NA NA NA