我有一个数据框
df
,其中包含带有英国邮政编码值的多个观察结果。我想创建一个新列,计算每个观测值 df$origin 和 df$dest 中邮政编码之间的距离。
我还没有获得 Google Maps API 的资金,想知道我是否可以使用
PostcodeioR
来做到这一点?或者在 RStudio 中有替代的免费方法吗?
# MRE
origin <- c("S6 2PA", "S35 0DP", "M1 6BD", "DE55 4JF")
dest <- c("S5 7AU", "S5 7AU", "S5 7AU", "S5 7AU")
df <- tibble(origin,dest)
最好,创建的距离是驾驶距离,而不是直线距离,但我知道这可能是不可能的。
PoscodesioR 包将查找您的邮政编码并告诉您它们的经度/纬度,因此您可以使用多种方法中的任何一种来获取“乌鸦”距离,例如
geosphere::distHaversine
library(tidyverse)
library(PostcodesioR)
library(geosphere)
origin <- c("S6 2PA", "S35 0DP", "M1 6BD", "DE55 4JF")
dest <- c("S5 7AU", "S5 7AU", "S5 7AU", "S5 7AU")
df <- tibble(origin, dest)
df %>%
mutate(miles = map2(origin, dest,
~ distHaversine(postcode_lookup(.x)[,7:8],
postcode_lookup(.y)[,7:8])/1609.34) |>
unlist())
#> # A tibble: 4 x 3
#> origin dest distance
#> <chr> <chr> <dbl>
#> 1 S6 2PA S5 7AU 1.98
#> 2 S35 0DP S5 7AU 4.63
#> 3 M1 6BD S5 7AU 32.5
#> 4 DE55 4JF S5 7AU 23.0
这些在直接测量中看起来都非常准确。
我不知道有哪个完全免费的 API 可以测量行驶距离。获得 Google API 密钥将允许您获取行驶距离,据我所知,您每月应该能够免费获得大约 40,000 次测量结果。根据您的项目规模,您可能根本不需要资金(不过,如果您有 100 万个距离需要快速测量,那么这将花费大约 5,000 美元)