我在R中有一个数据框纬度和经度点。使用R data science toolkit,我可以将这些点分配给国家/州/郡/市/选区/社区,这很有用。
我想将这些点分配给R或python中的5位邮政编码(甚至9位邮政编码!)。有一个简单的方法吗?
编辑:我找到了file that contains zip code boundaries。不幸的是,它是一个.lpk文件。如何将其导入R?
编辑2:我找到了shape file,这将更容易使用。
答案 0 :(得分:5)
在某处找到一个邮政编码shapefile(.shp格式,有时称为 ArcGIS Shapefiles)。
使用maptools
包readShapePoly
将其加载到R中
命令。
创建一个SpatialPointsDataFrame来保存点。
确保您的预测正确无误。
使用sp
包的overlay
命令将点叠加到多边形中。
您可以在taRifx包中找到cleanLatLon
有用。
答案 1 :(得分: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" )