我想創建一個大約200個郵編和相鄰郵編的矩陣來觸摸這些郵編。該矩陣將爲200 * 200,其中1代表兩個郵政編碼所在的單元格,當它們不是相鄰的郵編時,爲0。如何找到觸摸特定郵政編碼的其他郵編?
我該如何創建或獲得這樣的矩陣?非常感謝你。
最佳,
我想創建一個大約200個郵編和相鄰郵編的矩陣來觸摸這些郵編。該矩陣將爲200 * 200,其中1代表兩個郵政編碼所在的單元格,當它們不是相鄰的郵編時,爲0。如何找到觸摸特定郵政編碼的其他郵編?
我該如何創建或獲得這樣的矩陣?非常感謝你。
最佳,
如果你有機會到shapefile,這與spdep
包的幫助相對簡單。
下面是使用加利福尼亞郵政編碼數據(〜3.5MB下載)獨立例如:
# load libraries
library(rgdal)
library(spdep)
# download, unzip and import shapefile
download.file('http://geocommons.com/overlays/305142.zip', {f<-tempfile()})
unzip(f, exdir=tempdir())
shp <- readOGR(tempdir(), 'tigerline_shapefile_2010_2010_state_california_2010_census_5-digit_zip_code_tabulation_area_zcta5_state-based')
# identify neighbours for each poly
nbs <- setNames(poly2nb(shp), shp$ZCTA5CE10)
# convert to a binary neighbour matrix
nbs.mat <- nb2mat(nbs, zero.policy=TRUE, style='B')
# see?rgeos::gTouches for an alternative to the above steps
# assign zip codes as dimension names
dimnames(nbs.mat) <- list(shp$ZCTA5CE10, shp$ZCTA5CE10)
對於我們的數據集中,這將返回一個1769 X 1769矩陣指示哪些郵遞區號是鄰居。第10行和10列是這樣的:
nbs.mat[1:10, 1:10]
## 94601 94501 94560 94587 94580 94514 94703 95601 95669 95901
## 94601 0 1 0 0 0 0 0 0 0 0
## 94501 1 0 0 0 0 0 0 0 0 0
## 94560 0 0 0 0 0 0 0 0 0 0
## 94587 0 0 0 0 0 0 0 0 0 0
## 94580 0 0 0 0 0 0 0 0 0 0
## 94514 0 0 0 0 0 0 0 0 0 0
## 94703 0 0 0 0 0 0 0 0 0 0
## 95601 0 0 0 0 0 0 0 0 0 0
## 95669 0 0 0 0 0 0 0 0 0 0
## 95901 0 0 0 0 0 0 0 0 0 0
或者,如果你想有一個兩列的矩陣給鄰國對郵政編碼(即第1欄,和鄰近的郵政編碼是第2欄郵政編碼),您可以使用以下內容。
nbs.list <- sapply(row.names(nbs.mat), function(x) names(which(nbs.mat[x, ] == 1)))
nbs.pairs <- data.frame(zipcode=rep(names(nbs.list), sapply(nbs.list, length)),
neighbour=unlist(nbs.list))
head(nbs.pairs)
## zipcode neighbour
## 946011 94601 94501
## 946012 94601 94602
## 946013 94601 94605
## 946014 94601 94606
## 946015 94601 94621
## 946016 94601 94619
非常感謝jbaums。這是我正在尋找的。 :-)然而,我找不到KY,MS,NC,SC,TN和VA的形狀文件。我應該在哪裏找到它們。非常感謝你。 – user3435644
我不確定它們是否適用於geocommons中的所有州,但您可以嘗試[this](ftp://ftp2.census.gov/geo/tiger/TIGER2013/ZCTA5/tl_2013_us_zcta510.zip)文件,該文件我想象有_all_狀態的郵政編碼。 (我沒有檢查,因爲它是一個500MB的下載,我並不特別需要。) – jbaums
還要注意郵政編碼和[郵政編碼列表區域]之間的區別(http://en.wikipedia.org/wiki/ZIP_Code_Tabulation_Area )。後者在上面的shapefile中提供。 – jbaums
有一個郵政編碼shapefile [here](http://www.census.gov/cgi-bin/geo/shapefiles2013/main),如果有幫助。 – jbaums
從什麼信息你想構建這?你有形狀文件嗎?也許座標? –
我可以使用jbaums使用的一些shapefile。但不是所有我想要的國家。我想我可以手動輸入郵政編碼的座標。你覺得我應該怎麼做?我想了解9個州的信息,並且我能夠獲得4個州的shapefile,但沒有剩下的5個,正如我在下面提到的。請讓我知道如何使用經緯度信息來創建矩陣。非常感謝你。 – user3435644