приблизительное сопоставление символов с использованием R - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть два файла данных. Один из файлов содержит только один столбец с названием компании (обычно больницы), а другой содержит список компаний с соответствующими адресами. Проблема в том, что названия компаний не совсем совпадают. Как я могу сопоставить их примерно?

> dput(head(HOSPITALS[130:140,], 10))

Я хотел бы получить один файл данных, где company совпадает с адресом, если доступно в adress

1 Ответ

1 голос
/ 14 февраля 2020

Проверьте пакет 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
...