2017-12-05 4 views
-1

https://data.sfgov.org/Transportation/Bike-Share-Stations/gtyg-jpkj経度/緯度ジオメトリを変換すると、私はこのデータセットで働いている、と私は2つの列にジオメトリ(表ではGeom)に変換することができれば疑問に思っR

座標:R.

における経度と緯度

ありがとうございました!

+1

あなたの質問内のすべての関連する情報を記載してください。ソースのいくつかの行を貼り付け、これまでに試したことを示してみてください。また、あなたの質問に対する答えは「はい」です。度を削除し、数値に変換してください。 –

答えて

0

はいです。最も簡単な方法はおそらくtidyrパッケージを使用することです。 1つのライナーがあります:

library(tidyr) 
df <- fread("~/Downloads/Bike_Share_Stations.csv") # Read data 

extract(df, Geom, into = c('Lat', 'Lon'), '\\((.*),(.*)\\)', conv = T) 

最後の引数は、グループマッチを使用する正規表現です。それは単純なパターンです:それは文字通り(で始まります。最も内側の2つの括弧(.*)は、コンマで区切られた2つの座標です。これらのみが抽出されます。パターンは対応するリテラル)で終了します。ここ

は、得られたデータのサブセットである:

 UID Site ID    Last Edited Date   Lat    Lon 
    1: 1 SF-T24 S1 05/23/2016 12:00:00 AM +0000 37.7518243814 -122.426627114 
    2: 2 SF-G33 S1 05/23/2016 12:00:00 AM +0000 37.7935049482 -122.392846514 
    3: 3 SOMA-06A 05/23/2016 12:00:00 AM +0000 37.7897420277 -122.394678441 
    4: 4 SF-T22 S5 05/23/2016 12:00:00 AM +0000 37.7512809413 -122.431836215 
    5: 5 SF-R25 S4 05/23/2016 12:00:00 AM +0000 37.7567132725 -122.421038213 
---                   
103: 103  Embr-E 05/23/2016 12:00:00 AM +0000 37.8047749378 -122.403247294 
104: 104 SF-N26 S1 05/23/2016 12:00:00 AM +0000 37.7682271629 -122.420291015 
105: 105 Market-11B 05/23/2016 12:00:00 AM +0000 37.7922638478 -122.397066071 
106: 106 SF-O27 S2 05/23/2016 12:00:00 AM +0000 37.7671609432 -122.415485214 
107: 107 SF-T23 S5 05/23/2016 12:00:00 AM +0000 37.7514609421 -122.429135213 
0

私はGeom列が既に緯度/経度を含みました。

library(tidyverse) 

df <- df %>% 
    mutate(Geom = gsub('[()°]', '', Geom)) %>% 
    separate(col = Geom, into = c('Latitude', 'Longitude '), sep = '\\,') 

まず、我々はgsub('[()°]', '', geom)で括弧や学位のシンボルを削除し、Geom列を置き換えます。次に、separateGeomカラムを新しいLatitudeLongitudeカラムにカンマ区切り文字sep = '\\,'で追加します。

0

RSocrata::read.socratatidyr::extractこの簡潔します

library(tidyverse) 

df <- RSocrata::read.socrata('https://data.sfgov.org/Transportation/Bike-Share-Stations/gtyg-jpkj') 

df <- df %>% extract(Geom, c('lat', 'lon'), '\\((.*), (.*)\\)', convert = TRUE) 

# print nicely 
df %>% select(UID, Site.ID, lat, lon) %>% as_data_frame() 
#> # A tibble: 107 x 4 
#>  UID Site.ID  lat  lon 
#> * <int>  <chr> <dbl>  <dbl> 
#> 1  1 SF-T24 S1 37.75182 -122.4266 
#> 2  2 SF-G33 S1 37.79350 -122.3928 
#> 3  3 SOMA-06A 37.78974 -122.3947 
#> 4  4 SF-T22 S5 37.75128 -122.4318 
#> 5  5 SF-R25 S4 37.75671 -122.4210 
#> 6  6 NOMA-2E 37.79861 -122.4008 
#> 7  7 SF-L33 S4 37.77590 -122.3932 
#> 8  8 SF-O24 S4 37.76623 -122.4269 
#> 9  9 Market-03B 37.78099 -122.4117 
#> 10 10 SF-O28 S2 37.76723 -122.4108 
#> # ... with 97 more rows 
関連する問題