【问题标题】:approximate character matching using R使用 R 进行近似字符匹配
【发布时间】:2020-03-31 13:09:00
【问题描述】:

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

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

我想获取一个数据文件,其中company 与地址匹配(如果在adress 中可用)

【问题讨论】:

  • 您能否提供一个可重现的示例,其中包含每个数据文件中的几行公司名称?
  • @qdread 添加了一个例子
  • 请使用dput(head(company[130:140,],10)),以便人们可以复制和粘贴。谢谢!
  • @qdread 好的,完成
  • 我认为这只是使用library(fuzzyjoin)的一个案例。在 SO 上搜索此内容,这是一个已回答的问题,可帮助您入门:stackoverflow.com/questions/51958119/…

标签: r dplyr character data-wrangling


【解决方案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

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2013-04-15
    • 2015-05-22
    • 2011-05-11
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2011-11-25
    • 2015-02-12
    相关资源
    最近更新 更多