我有一列合并的纬度和经度坐标,格式如下:
coordinates
(-73.2566,44.51513)
我正在尝试获取格式
lat long
73.2566 44.51512
我知道这似乎是一个相对简单的问题,但我似乎无法找到解决方案。我已经尝试使用gsub()函数但是没有摆脱括号。
答案 0 :(得分:2)
尝试使用这个简单的功能(需要使用google api):
google_api <- "https://maps.googleapis.com/maps/api/geocode/json"
geocode <- function(address, verbose=FALSE) {
library(httr)
r <- GET(google_api, query=list(address=address))
stop_for_status(r)
result <- content(r)
first <- result$results[[1]]
df <- as.data.frame(list(lat=first$geometry$location$lat,
lon=first$geometry$location$lng))
return(df)
}
#example
geocode("Suzhou New Matro")
lat lon
1 31.31015 120.6221
使用google api,函数geocode()
会为每个城市返回您需要的格式的坐标
答案 1 :(得分:1)
> library(stringr)
> library(magrittr)
> "(-73.2566, 44.51513)" %>% # take coord as string
+ str_replace_all("[()]", "") %>% # replace parantheses
+ str_split_fixed(", ", n=2) %>% # split up based on comma and space after
+ as.data.frame %>% # turn this to a data frame
+ transmute(lat=V1, long=V2) # rename the variables
lat long
1 -73.2566 44.51513
如果您有这些值的向量,可以通过执行此for (i in coords)
轻松调整,其中最后data.frame
将使用类似bind_rows
的内容重复添加到数据集中
答案 2 :(得分:1)
这可能太简单了,但
> coordinates=c(-73.2566,44.51513)
> coordinates
[1] -73.25660 44.51513
> lat=coordinates[1]
> lat
[1] -73.2566
> long=coordinates[2]
> long
[1] 44.51513
https://www.nceas.ucsb.edu/~frazier/RSpatialGuides/ggmap/ggmapCheatsheet.pdf
有一个ggmap包