如何手动匹配 left_join 不匹配的单元格?
How to manually match cells that aren't matched by left_join?
我在 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
一个选项是基于距离法的模糊连接
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
模糊连接
或者在加入之前清理数据。在您的 reprx 中,您将用 space 替换所有“-”。一个数据集加个-或space等
不无道理
如果输入的数据受到验证不佳的人工输入的影响,尤其是如果这种情况会继续发生,则更难修复 Pariss(打字错误)而不模糊。
您显然需要意识到模糊连接不应该连接的风险。我曾经出现在错误的村庄,因为 Google 以错误的方式列出了他们(一个是双 R,另一个是单)
我在 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
一个选项是基于距离法的模糊连接
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
模糊连接
或者在加入之前清理数据。在您的 reprx 中,您将用 space 替换所有“-”。一个数据集加个-或space等
不无道理如果输入的数据受到验证不佳的人工输入的影响,尤其是如果这种情况会继续发生,则更难修复 Pariss(打字错误)而不模糊。
您显然需要意识到模糊连接不应该连接的风险。我曾经出现在错误的村庄,因为 Google 以错误的方式列出了他们(一个是双 R,另一个是单)