У меня есть фрейм данных с местоположениями, и я хочу добавить к ним номера телефонов и веб-сайты из Google Мест на карте в подходящем решении.
Самым близким, что я получил для этого, было использование googleway
, распечатка JSON и использование регулярных выражений для извлечения идентификатора места, и повторение того же для телефонных номеров и адресов электронной почты.Есть ли более целевой способ сделать это?
library(googleway)
library(tidyverse)
set_key("api")
index_no <- c(1,2,3,4)
landmark<- c("Sydney Opera House","Eiffel Tower","Empire State Building","Big Ben")
df <- data.frame(index_no,landmark, stringsAsFactors = F)
df %>%
rowwise() %>%
# Place IDs are required for the function beneath
do(data.frame(., place_id = unlist(google_places(search_string = .$landmark)))) %>%
# Place IDs are 27 chars
filter(grepl("^\\S{27}$", place_id )) %>%
do(data.frame(., details = unlist(google_place_details(place_id = .$place_id )))) %>%
unique() %>%
# Gets non-Google URls and Phone Numbers
filter(grepl("(?!.*(google|maps))(^https?.*|^\\+\\d)", details, perl = T )) %>%
group_by(landmark) %>%
mutate(seq = 1:n()) %>%
spread(seq, details) %>%
rename(phone_number = `1`, website = `2`) %>%
select(-place_id) %>%
ungroup()