I'm trying to use the ggmap package with the route()
function to obtain driving distance and time from a tibble consisting of multiple pairs of coordinates.
Data:
locations <- tibble(start_loc = c("44.025135, -69.892204", "44.0175617, -70.0108097"), end_loc = "43.9195136, -69.9665309")
What I would like to end up with is the locations
tibble appended with two more columns, a total travel time and total distance. For this I probably need to loop through each row in locations
, passing each pair of coordinates through the route()
function. The trouble is that the output from route()
produces a row for each step in the route.
What I have so far:
library(ggmap)
library(dplyr)
locations
# A tibble: 2 x 2
# start_loc end_loc
# <chr> <chr>
#1 44.025135, -69.892204 43.9195136, -69.9665309
#2 44.0175617, -70.0108097 43.9195136, -69.9665309
for(i in 1:nrow(locations)) {
route_output <- route(from = locations$start_loc[i], to = locations$end_loc[i],
mode = c("driving"), output = c("simple"), units ="mi", structure = "legs")
}
route_output
# A tibble: 6 x 11
# m km miles seconds minutes hours start_lon start_lat end_lon end_lat route
# <int> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
#1 2608 2.61 1.62 184 3.07 0.0511 -70.0 44.0 -70.0 44.0 A
#2 524 0.524 0.326 32 0.533 0.00889 -70.0 44.0 -70.0 44.0 A
#3 3106 3.11 1.93 232 3.87 0.0644 -70.0 44.0 -70.1 44.0 A
#4 9516 9.52 5.91 528 8.8 0.147 -70.1 44.0 -70.0 43.9 A
#5 88 0.088 0.0547 9 0.15 0.0025 -70.0 43.9 -70.0 43.9 A
#6 1960 1.96 1.22 166 2.77 0.0461 -70.0 43.9 -70.0 43.9 A
What this is showing is each step of the route for only the last start_loc
end_loc
pair. So it's not looping as I would like and I don't get summary info. I don't even have a way to tack the route_output
tibble back onto the `locations tibble. In short, I'm really jammed up.
Advice on what to do? If the ggmap package is not good for this, what else should I use?
Try something like:
You'll get: