Executes multiple geocoding queries on a dataframe input and combines the results. To use a character vector input instead, see the geo_combine function. Queries are executed by the geocode function. See example usage in vignette("tidygeocoder").

Query results are by default labelled to show which query produced each result. Labels are either placed in a query column (if return_list = FALSE) or used as the names of the returned list (if return_list = TRUE). By default the method parameter value of each query is used as a query label. If the same method is used in multiple queries then a number is added according to the order of the queries (ie. osm1, osm2, ...). To provide your own custom query labels use the query_names parameter.

geocode_combine(
  .tbl,
  queries,
  global_params = list(),
  return_list = FALSE,
  cascade = TRUE,
  query_names = NULL,
  lat = "lat",
  long = "long"
)

Arguments

.tbl

dataframe containing addresses

queries

a list of queries, each provided as a list of parameters. The queries are executed by the geocode function in the order provided. (ex. list(list(method = 'osm'), list(method = 'census'), ...))

global_params

a list of parameters to be used for all queries (ex. list(address = 'address', full_results = TRUE))

return_list

if TRUE then results from each service will be returned as separate dataframes. If FALSE (default) then all results will be combined into a single dataframe.

cascade

if TRUE (default) then only addresses that are not found by a geocoding service will be attempted by subsequent queries. If FALSE then all queries will attempt to geocode all addresses.

query_names

optional vector with one label for each query provided (ex. c('geocodio batch', 'geocodio single')).

lat

latitude column name. Can be quoted or unquoted (ie. lat or 'lat').

long

longitude column name. Can be quoted or unquoted (ie. long or 'long').

Value

tibble (dataframe)

See also

Examples

# \donttest{ library(dplyr, warn.conflicts = FALSE) sample_addresses %>% geocode_combine( queries = list(list(method = 'census'), list(method = 'osm')), global_params = list(address = 'addr'), cascade = TRUE)
#>
#>
#> Passing 9 addresses to the US Census batch geocoder
#> Query completed in: 1.1 seconds
#> Passing 5 addresses to the Nominatim single address geocoder
#> Query completed in: 5 seconds
#> # A tibble: 9 × 5 #> name addr lat long query #> <chr> <chr> <dbl> <dbl> <chr> #> 1 White House 1600 Pennsylvania Ave NW Washington… 38.9 -77.0 "censu… #> 2 Transamerica Pyramid 600 Montgomery St, San Francisco, C… 37.8 -122. "censu… #> 3 NY Stock Exchange 11 Wall Street, New York, New York 40.7 -74.0 "censu… #> 4 Willis Tower 233 S Wacker Dr, Chicago, IL 60606 41.9 -87.6 "censu… #> 5 Chateau Frontenac 1 Rue des Carrieres, Quebec, QC G1R… NA NA "" #> 6 Nashville Nashville, TN 36.2 -86.8 "osm" #> 7 Nairobi Nairobi, Kenya -1.28 36.8 "osm" #> 8 Istanbul Istanbul, Turkey 41.0 29.0 "osm" #> 9 Tokyo Tokyo, Japan 35.7 140. "osm"
more_addresses <- tibble::tribble( ~street_address, ~city, ~state, ~zip_cd, "624 W DAVIS ST #1D", "BURLINGTON", "NC", 27215, "201 E CENTER ST #268", "MEBANE", "NC", 27302, "100 Wall Street", "New York", "NY", 10005, "Bucharest", NA, NA, NA ) more_addresses %>% geocode_combine( queries = list( list(method = 'census', mode = 'batch'), list(method = 'census', mode = 'single'), list(method = 'osm') ), global_params = list(street = 'street_address', city = 'city', state = 'state', postalcode = 'zip_cd'), query_names = c('census batch', 'census single', 'osm') )
#>
#>
#>
#> Passing 4 addresses to the US Census batch geocoder
#> Query completed in: 0.3 seconds
#> Passing 3 addresses to the US Census single address geocoder
#> Query completed in: 1.7 seconds
#> Passing 1 address to the Nominatim single address geocoder
#> Query completed in: 1 seconds
#> # A tibble: 4 × 7 #> street_address city state zip_cd lat long query #> <chr> <chr> <chr> <dbl> <dbl> <dbl> <chr> #> 1 624 W DAVIS ST #1D BURLINGTON NC 27215 36.1 -79.4 census single #> 2 201 E CENTER ST #268 MEBANE NC 27302 36.1 -79.3 census single #> 3 100 Wall Street New York NY 10005 40.7 -74.0 census batch #> 4 Bucharest NA NA NA 33.5 -117. osm
more_addresses %>% geocode_combine( queries = list( list(method = 'census', mode = 'batch', street = 'street_address', city = 'city', state = 'state', postalcode = 'zip_cd'), list(method = 'arcgis', address = 'street_address') ), cascade = FALSE, return_list = TRUE )
#>
#>
#> Passing 4 addresses to the US Census batch geocoder
#> Query completed in: 0.4 seconds
#> Passing 4 addresses to the ArcGIS single address geocoder
#> Query completed in: 1.1 seconds
#> $census #> # A tibble: 4 × 6 #> street_address city state zip_cd lat long #> <chr> <chr> <chr> <dbl> <dbl> <dbl> #> 1 624 W DAVIS ST #1D BURLINGTON NC 27215 NA NA #> 2 201 E CENTER ST #268 MEBANE NC 27302 NA NA #> 3 100 Wall Street New York NY 10005 40.7 -74.0 #> 4 Bucharest NA NA NA NA NA #> #> $arcgis #> # A tibble: 4 × 6 #> street_address city state zip_cd lat long #> <chr> <chr> <chr> <dbl> <dbl> <dbl> #> 1 624 W DAVIS ST #1D BURLINGTON NC 27215 38.5 -122. #> 2 201 E CENTER ST #268 MEBANE NC 27302 45.9 -123. #> 3 100 Wall Street New York NY 10005 40.7 -74.0 #> 4 Bucharest NA NA NA 44.4 26.1 #>
# }