3

我需要模糊匹配并获取两个不同数据集中的 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'

现在我library(fuzzyjoin)结合使用library(dplyr)来创建以下脚本:

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)

该脚本工作正常。但我想在以下地址组合之间有不同的距离:

a) 1204 Roma Street 8 与 1204 Roma Street 81 --> 距离 = 0.0147
b) 1204 Roma Street 8 与 1204 Roma Street 8A --> 距离 = 0.0147

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

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

怎么可能做到这一点?

4

1 回答 1

0

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

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

于 2018-07-12T14:56:05.677 回答