我有两个数据文件。其中一个文件仅包含一列带有公司名称(通常是医院)的列,而另一个包含具有相应地址的公司列表。问题是公司名称不完全匹配。我怎样才能大致匹配它们?
> dput(head(HOSPITALS[130:140,], 10))
我想获得一个company
与地址匹配的数据文件,如果在adress
我有两个数据文件。其中一个文件仅包含一列带有公司名称(通常是医院)的列,而另一个包含具有相应地址的公司列表。问题是公司名称不完全匹配。我怎样才能大致匹配它们?
> dput(head(HOSPITALS[130:140,], 10))
我想获得一个company
与地址匹配的数据文件,如果在adress
查看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