R:两个数据集之间的模糊连接

R:两个数据集之间的模糊连接,r,dplyr,fuzzyjoin,R,Dplyr,Fuzzyjoin,我需要模糊匹配并获得两个distint数据集中zip/地址之间的距离 下面是一个例子: name_a <- c("Aldo", "Andrea", "Alberto", "Antonio", "Angelo") name_b <- c("Sara", "Serena", "Silvia", "Sonia", "Sissi") zip_street_a <- c("1204 Roma Street 8", "1204 Roma Street 8", "1204 Roma Str

我需要模糊匹配并获得两个distint数据集中zip/地址之间的距离

下面是一个例子:

name_a <- c("Aldo", "Andrea", "Alberto", "Antonio", "Angelo")
name_b <- c("Sara", "Serena", "Silvia", "Sonia", "Sissi")

zip_street_a <- c("1204 Roma Street 8", "1204 Roma Street 8", "1204 Roma Street 8", "1204 Venezia street 10", "1204 Venezia Street 110")

zip_street_b <- c("1204 Roma Street 81", "1204 Roma Street 8A", "1204 Roma Street 8B", "1204 Roma Street 8C", "1204 Venezia Street 10C")

db_a <- data.frame(name_a, zip_street_a)
db_b <- data.frame(name_b, zip_street_b)

names(db_a)[names(db_a)=='zip_street_a'] <- 'zipstreet'
names(db_b)[names(db_b)=='zip_street_b'] <- 'zipstreet'
剧本写得很好。但我希望以下地址组合之间有不同的距离:

a) 1204罗马街8号vs.1204罗马街81-->距离=0.0147
b) 1204罗马街8号与1204罗马街8A-->距离=0.0147

现在,罗马街81号离罗马街8号很远。 另一方面,罗马街8A号与罗马街8号非常接近

所以,对于8A,我需要一个非常接近0的距离,对于81,我需要一个远离0的距离


如何做到这一点?

距离基于字符串匹配,即模糊匹配。但是你说的是两个地址之间的物理距离


在这种情况下,您需要根据每个地址收集经度和纬度数据。

但是来自“1204 Doma Street 8”街的人仍然非常接近,我不确定您是否能通过这种方法获得任何结果。。。从
ggmap
软件包中,您将找到一个
geocode
函数,该函数将为您提供gps坐标,然后您可以计算实际距离
db_a$zipstreet2好的,我将街道名称与街道编号分开。但这难道不是很容易,因为我不得不离开:richtistrasse 7A,仅仅是第7A部分。我使用的是gsub(“^[:digit:][]”,“”,mydata),但它只需要7个字符,而不是7个字符。你认为有解决办法吗?试试这个,street
match_data <- stringdist_left_join(db_a, db_b,
              by = "zipstreet",
              ignore_case = TRUE,
              method = "jaccard",
              max_dist = 1,
              distance_col = "dist"
) %>%
  Group_by(zipstreet.x)