2011-08-02 14 views
3

私はデータフレームの緯度と経度をRで表示しています。R data science toolkitを使用して、これらの点を国/州/都道府県/国勢調査/近所に割り当てることができます。緯度/経度に郵便番号を割り当てる

私は5桁のジップコードにこれらの点を割り当てるしたい(あるいは9桁の郵便番号!)RまたはPythonで。これを行う簡単な方法はありますか?

編集:私はfile that contains zip code boundariesを発見しました。残念ながら、それは.lpkファイルです。これをRにどのようにインポートしますか?
編集2:私はshape fileを見つけました。これは使いやすくなります。

+2

5桁の郵便番号の包括的なリストを持つRの 'zipcode'パッケージをお試しください。ここには何が含まれているかについての簡単な説明とのリンクがあります。http://www.r-bloggers.com/my-first-r-package-zipcode/ – Ramnath

+1

@Ramnath:精度は必要ない場合はうまくいくでしょう。しかし、基本的に重心が含まれているので、各郵便番号を円とみなさなければなりません。彼のニーズが何であるかによって異なります。 –

+0

@Ramnath:緯度/経度を指定すると、 'zipcode'パッケージを使って郵便番号にどのように割り当てるのでしょうか?私の直感は、距離の公式を使って最も近い郵便番号の中心を見つけることですが、直感はしばしば間違っています... – Zach

答えて

5
  1. (時々 ArcGISのシェープファイルと呼ばれる、.shpのフォーマットを)どこかに郵便番号のシェープファイルを検索します。

  2. maptoolsパッケージのreadShapePoly コマンドを使用してRにロードします。

  3. ポイントを保持するSpatialPointsDataFrameを作成します。

  4. は、あなたの予測が正しいことを確認します。

  5. パッケージのoverlayコマンドを使用して、ポイントをポリゴンにオーバーレイします。

あなたはtaRifxパッケージのcleanLatLonが役立つことがあります。

+0

郵便番号のシェイプファイルはどこにありますか?私の予測が正しいことを確認するにはどうすればよいですか?私が言ったように、今はちょうど緯度/経度のリストを持っています。 – Zach

+0

**投影**:あなたのシェイプファイルが緯度/経度である限り、あなたは大丈夫です。それ以外の場合は、それらを同じ形式に投影する必要があります。シェイプファイルを取得したら投稿を編集してください。プロジェクトを作成する必要がある場合は、詳細を投稿します。 ** Shapefile **:ここで試してみてくださいhttp://www.cartotalk.com/index.php?showtopic=4416また、多くの大学図書館では、サイトライセンスを無料で提供するため、ESRI Maps&Dataディスクをファイルに保管しています。 –

+0

申し訳ありませんが、シェイプファイルが見つかりました。それをRにどのようにインポートするのですか?これは、.lpkファイルです:http://www.arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 – Zach

3

私はgsk3をまとめて走り、魅力的に働いていました。ここに特定のコードがあります。私は参照のために私のlatlongデータフレームのstrを含めました。

> # Shape files found here by state: http://www.census.gov/geo/www/cob/z52000.html#shp 
> 
> library(maptools) 
> library(maps) 
> 
> zip.map <- readShapePoly("zt48_d00.shp") 
> latlong <- read.csv("latlong.csv") 
> str(latlong) 
'data.frame': 2102 obs. of 3 variables: 
$ ref : Factor w/ 1594 levels ... 
$ lat : num 32.9 32.9 32.9 32.9 32.9 ... 
$ long: num -96.7 -96.7 -96.7 -96.7 -96.7 ... 
> coordinates(latlong) = ~long+lat 
> write.csv(cbind(latlong, overlay(zip.map,latlong)),"zip.match.csv") 
関連する問題