2017-05-26 107 views
0

座標我有合併的緯度和經度的列座標的格式如下:緯度和經度中的R

coordinates 
(-73.2566,44.51513) 

我想獲得的格式

lat  long 
73.2566 44.51512 

我知道這看起來像一個相對簡單的問題,但我似乎無法找到解決方案。我已經嘗試過使用gsub()函數,但是沒有去除括號。

+1

使用'pattern =「\\(| \\」',然後'replacement =「」'爲gsub,然後'strsplit'爲'「,」'。 – din

+0

作爲一邊(因爲你用'google-maps'標記了這個問題)我已經建立了[googleway](https://cran.r-project.org/web/packages/googleway/googleway.pdf )包,可通過R訪問Google Maps API。有關示例,請參見[vignette](https://cran.r-project.org/web/packages/googleway/vignettes/googleway-vignette.html)。 – SymbolixAU

回答

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數據集改編。

+0

謝謝你,這是非常有幫助的,我知道它比我想它更簡單哈哈。 – Bryant

2

試試這個簡單的功能(需使用谷歌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 

使用谷歌API的功能geocode()返回每個城市在格式座標你需要

+0

我對使用已經提供的點更感興趣,但是感謝您使用這個有用的功能,下次我只有地址時纔會使用。 – Bryant

+0

洛倫佐,你的天才! –