【问题标题】:How to manually match cells that aren't matched by left_join?如何手动匹配left_join不匹配的单元格?
【发布时间】:2021-02-06 20:30:50
【问题描述】:

我正在使用 R 中的 tidyverse 包来匹配两个数据框的城市名称。虽然我的大部分观察结果都匹配,但由于名称略有不同(例如“Sao Joao Del-Rey”和“Sao Joao Del Rey”),其余观察结果不匹配。有没有办法可以在 left_join 函数(或其他函数)中指定这些自治市,以便也匹配它们? 作为一个例子,我做了一个可重复的例子,其中“里约热内卢”和“巴黎”的城市在第二个数据帧中略有不同。假设我有一个匹配列表 L = ["Rio de Janeiro" = "Rio de-Janeiro", "Paris" = "Pariss"),我如何告诉 R 也匹配这些单元格?提前致谢。

library(tidyverse)

df1 <- data.frame(municipalities = c('New York', 'London', 'Shangai', 'Rio de Janeiro', 'Paris'),
                crimes = c(5, 7, 8, 4, 6))
df2 <- data.frame(municipalities = c('New York', 'London', 'Shangai', 'Rio de-Janeiro', 'Pariss'),
                 GDP = c(45, 56, 67, 78, 89))

df3 <- df1 %>% left_join (df2, by = 'municipalities')
``` R

【问题讨论】:

    标签: r left-join tidyverse


    【解决方案1】:

    一个选项是基于距离方法的模糊连接

    library(fuzzyjoin)
    stringdist_left_join(df1, df2, by = 'municipalities') %>%
           transmute(municipalities = municipalities.x, crimes, GDP)
    

    -输出

    #  municipalities crimes GDP
    #1       New York      5  45
    #2         London      7  56
    #3        Shangai      8  67
    #4 Rio de Janeiro      4  78
    #5          Paris      6  89
    

    【讨论】:

      【解决方案2】:

      模糊连接

      或者在加入前清理数据。在您的 reprx 中,您将用空格替换所有“-”。一个数据集加一个-或空格等也不是不合理

      如果传入的数据受到验证不佳的人工输入的影响,尤其是如果这种情况继续发生,则更难修复 Pariss(错字)而不造成模糊。

      您显然需要意识到不应该模糊连接事物的风险。我曾经出现在错误的村庄,因为谷歌以错误的方式列出了它们(一个有双 R,另一个有单)

      【讨论】:

        猜你喜欢
        • 2019-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-22
        • 1970-01-01
        • 1970-01-01
        • 2016-02-22
        • 1970-01-01
        相关资源
        最近更新 更多