【问题标题】:merge 2 data.tables on partial match [duplicate]在部分匹配时合并 2 个 data.tables [重复]
【发布时间】:2020-12-13 10:59:08
【问题描述】:

我有 data.table 1 之类的:

entidad                 municipio                   col1   
AGUASCALIENTES          Aguascalientes              5000
PUEBLA                  Jes�s Mar�a                 3000
VALLE                   Calvillo                    2000
JALISCO                 Pabell�n de Arteaga         1000

和 data.table 2 类似:

entidad                 municipio                   col2   
AGUASCALIENTES          Aguascalientes              16369
PUEBLA                  Jesus Maria                 1687
VALLE                   Calvillo                    916
JALISCO                 Pabellon de Arteaga         774

我想使用列entidadmunicipio 执行合并,例如merge(dt1, dt2, by = c('entidad', 'municipio')),使用两列上的部分匹配或仅列municipio。但是问题是 data.table 1 有重音符号和奇怪的符号 ,因此 municipio 列可能在 3 种不同的情况下有所不同 1) 重音符号,2) 符号 或略有不同的名称 (ej ' dt1 中的 ciudad juarez' 和 dt2 中的 'Juárez')。由于我对使用字符串/字符列不是很熟悉,我想知道是否有人可以帮助我弄清楚在这种情况下如何执行合并?我想获得的结果如下,来自上一个示例:

entidad                 municipio                   col1    col2
AGUASCALIENTES          Aguascalientes              5000    16369
PUEBLA                  Jesus Maria                 3000    1687
VALLE                   Calvillo                    2000    916
JALISCO                 Pabellon de Arteaga         1000    774

【问题讨论】:

    标签: r regex merge data.table


    【解决方案1】:

    您可以为此使用-package 中的stringdist_join-函数:

    library(fuzzyjoin)
    stringdist_join(d1, d2,
                    by = c("entidad","municipio"),
                    max_dist = 2,
                    method = "lv")
    

    这给出了:

           entidad.x         municipio.x col1      entidad.y         municipio.y  col2
    1 AGUASCALIENTES      Aguascalientes 5000 AGUASCALIENTES      Aguascalientes 16369
    2         PUEBLA         Jes�s Mar�a 3000         PUEBLA         Jesus Maria  1687
    3          VALLE            Calvillo 2000          VALLE            Calvillo   916
    4        JALISCO Pabell�n de Arteaga 1000        JALISCO Pabellon de Arteaga   774
    

    之后您可以使用dplyr::select 来保留您需要的列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 2019-09-24
      相关资源
      最近更新 更多