0

我有两个数据文件。其中一个文件仅包含一列带有公司名称(通常是医院)的列,而另一个包含具有相应地址的公司列表。问题是公司名称不完全匹配。我怎样才能大致匹配它们?

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

我想获得一个company与地址匹配的数据文件,如果在adress

4

1 回答 1

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
于 2020-02-14T13:43:40.487 回答