我不認爲實際的郵遞區號是作爲數字鄰接不一定對應於物理鄰接有用。我想你問的是如何獲得郵政編碼的鄰域矩陣,但要做到這一點,我相信你需要更多的信息。例如,您可以計算每個郵政編碼中心的距離(給定的緯度和經度)並將它們設爲閾值,但由於郵政編碼的相對大小,一些較高密度區域的距離會較小。
假設你想這樣做,你可以使用geosphere package.這個軟件包有一個函數調用distHaversine這需要作爲參數兩分,和一個可選的球面半徑參數,併爲您考慮到曲率的點之間的距離地球和一切。
所有這一切都說,更好的方法可能是下載郵政編碼邊界的數據並查看邊界相交的地方。我可以找到的最新數據(免費)是here;這是非常古老的。要訪問它,請單擊下拉菜單並選擇郵政編碼製表區。該文件大約500 MB。
解壓縮的數據有一個.shp文件,this post有一個很好的指導形狀數據的教程。公然採取了一些東西從那個傢伙的帖子,下面的代碼獲取形狀文件到內存:
# Install dependencies
install.packages("rgeos")
install.packages("maptools")
library(rgeos)
library(maptools)
# Define the projection to be used
crswgs84=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
# Load the shapes
postal.codes=readShapePoly("tl_2013_us_zcta510.shp",proj4string=crswgs84,verbose=TRUE)
與this答案進行操作,請在rgeos包有一個功能叫做gTouches從多邊形構建鄰接矩陣邊界。
# Get adjacency matrix, returnDense=FALSE is to get a sparse matrix for memory purposes
adj.mat <- gTouches(postal.codes, byid=TRUE, returnDense=FALSE)
運行該代碼爲所有郵政編碼可以是非常耗時的(也可能引發一些錯誤,由於位置的極端差異),但只能訪問那些你有興趣,你可以做排索引上形狀對象。例如,得到的前200個郵政編碼的鄰接通過執行完成:
adj.mat.sub <- gTouches(postal.codes[1:200,], byid=TRUE, returnDense=TRUE)
實際郵政編碼本身在形狀對象內的數據幀。您可以通過訪問它們:
[email protected]$ZCTA5CE10
您可以使用這些來獲得指數出現在您自己的數據郵政編碼,以及更快速的計算上更小,相關子集的鄰接矩陣。所有這些都需要根據人口普查數據和您自己的數據框進行一些簿記。
可能有更多當前的郵政編碼幾何可供購買(或可能免費),但人口普查數據是可用且易於使用的良好組合。
我試着回答這個問題,但問題本身需要對格式和語法進行一些編輯,以便您提出的問題更加清晰。 –