首页 > 解决方案 > 从 R 中的位置字符串中查找城市、州和国家/地区信息

问题描述

我有一个带有位置信息的字符串向量。这是我的字符串的一部分

location_information = c("Hartville, Ohio","Malaysia,Johor Bahru","Culpeper, irginia",
                          "MD", "Atlanta","Granada Hills CA","Kansas City, mo")

使用这个字符串向量,我想获取城市、州和国家信息。这是示例的所需输出。

desired_out = data.frame(  Country = c("US","Malaysia",rep("US",5)),
  State = c("Ohio",NA,"Virginia","Maryland","Georgia","California","Missouri"),
  City = c("Hartville","Johor Bahru","Culpeper",NA, "Atlanta","Granada Hills","Kansas City"))

如何以一致的字符串格式获取该信息?

我想我可能需要使用 Google API 什么的。我怎样才能在 R 中做到这一点?

标签: rgeolocationstringr

解决方案


这是一个使用来自openstreetmap 的地理编码来获取所需附加信息的解决方案。

请注意,您(可能)将无法一次性解析数百/数千个位置。

library(tmap)
library(tmaptools)
library(dplyr)
# sample data of locations
location_information = c("Hartville, Ohio","Malaysia,Johor Bahru","Culpeper, Virginia",
                         "MD", "Atlanta","Granada Hills CA","Kansas City, mo")
# geocode the locations
loc.data <- tmaptools::geocode_OSM(location_information, as.sf = TRUE)
# reverse geocode the locations for additional OSM data
tmaptools::rev_geocode_OSM(loc.data) %>%
  dplyr::select(country, state, city, town, village, city_district)
#         country      state        city     town   village city_district
# 1 United States       Ohio        <NA>     <NA> Hartville          <NA>
# 2      Malaysia      Johor Johor Bahru     <NA>      <NA>          <NA>
# 3 United States   Virginia        <NA> Culpeper      <NA>          <NA>
# 4 United States   Maryland        <NA>     <NA>      <NA>          <NA>
# 5 United States    Georgia     Atlanta     <NA>      <NA>          <NA>
# 6 United States California Los Angeles     <NA>      <NA> Granada Hills
# 7 United States   Missouri Kansas City     <NA>      <NA>          <NA>

推荐阅读