如何解决R中的邮政编码人群
| 我可以“很长一段时间”实现目标,但希望完全停留在R中。我希望通过邮政编码将人口普查人口统计数据附加到数据库中的记录中。我知道R有一些基于人口普查的程序包,但是,除非我缺少某些内容,否则这些数据似乎在邮政编码级别上不存在,并且将其合并到现有数据框中也不直观。 简而言之,是否有可能在R中执行此操作,还是我最好的方法是在其他地方获取数据并将其读入R? 任何帮助将不胜感激!解决方法
简而言之,没有。普查到zip的翻译通常是从专有资源创建的。
从人口普查的角度(隐私)来看,您不太可能在邮政编码区域找到任何东西。但是,这并不意味着您就被冷落了。您可以使用已有的邮政编码,并从MSA,muSA或CSA级别附加人口普查数据。现在,您所需要的只是MSA,muSA或CSA中的邮政编码列表,以便您可以合并。如果您还没有这样的清单,那么网上有很多便宜的东西。
例如,在加拿大,我们可以从FRA级别的CRA获得收入数据(邮政编码的前三位数字为A1A 1A1格式)。我不确定IRS会提供什么或是否提供类似的信息,我也不太熟悉美国人口普查数据,但是我想他们至少会在CSA级别上提供信息。
如果您对所有这些缩写感到困惑:
MSA:http://en.wikipedia.org/wiki/Metropolitan_Statistical_Area
CSA:http://en.wikipedia.org/wiki/Combined_statistical_area
muSA:http://en.wikipedia.org/wiki/Micropolitan_Statistical_Area
, 正如该主题中的其他人所提到的,美国人口普查局FactFinder是免费的全面详细数据的来源。不幸的是,以原始格式使用它并不是特别容易。
我们已经提取,清理,合并和重新格式化了人口普查局的数据。有关此过程的详细信息以及如何使用数据文件,请参见我们的团队博客。
这些表实际上都没有一个名为“ ZIP代码”的字段。相反,它们有一个名为“ ZCTA5”的字段。 ZCTA5(或ZCTA)可以被认为可以与以下注意事项提供的邮政编码互换:
没有用于邮政信箱邮政编码的ZCTA-这意味着对于42,000个美国邮政编码,有32,000个ZCTA。
ZCTA代表邮政编码列表区域,它们基于邮政编码,但不一定遵循确切的邮政编码边界。如果您想了解有关ZCTA的更多信息,请参考此链接。人口普查局还提供动画,显示ZCTA的形成方式。
, 我刚刚编写了一个名为
totalcensus
(https://github.com/GL-Li/totalcensus)的R程序包,使用该程序包,您可以轻松提取十年期普查和ACS调查中的任何数据。
对于这个旧问题,如果您仍然在意,则可以从2010年或2015年ACS五年期人口普查的国家数据中获得总人口(默认情况下)和其他种族的人口。
从2015年ACS进行的5年调查。用download_census(\"acs5year\",2015,\"US\")
下载国家数据,然后:
zip_acs5 <- read_acs5year(
year = 2015,states = \"US\",geo_headers = \"ZCTA5\",table_contents = c(
\"white = B02001_002\",\"black = B02001_003\",\"asian = B02001_005\"
),summary_level = \"860\"
)
# GEOID lon lat ZCTA5 state population white black asian GEOCOMP SUMLEV NAME
# 1: 86000US01001 -72.62827 42.06233 01001 NA 17438 16014 230 639 all 860 ZCTA5 01001
# 2: 86000US01002 -72.45851 42.36398 01002 NA 29780 23333 1399 3853 all 860 ZCTA5 01002
# 3: 86000US01003 -72.52411 42.38994 01003 NA 11241 8967 699 1266 all 860 ZCTA5 01003
# 4: 86000US01005 -72.10660 42.41885 01005 NA 5201 5062 40 81 all 860 ZCTA5 01005
# 5: 86000US01007 -72.40047 42.27901 01007 NA 14838 14086 104 330 all 860 ZCTA5 01007
# ---
# 32985: 86000US99923 -130.04103 56.00232 99923 NA 13 13 0 0 all 860 ZCTA5 99923
# 32986: 86000US99925 -132.94593 55.55020 99925 NA 826 368 7 0 all 860 ZCTA5 99925
# 32987: 86000US99926 -131.47074 55.13807 99926 NA 1711 141 0 2 all 860 ZCTA5 99926
# 32988: 86000US99927 -133.45792 56.23906 99927 NA 123 114 0 0 all 860 ZCTA5 99927
# 32989: 86000US99929 -131.60683 56.41383 99929 NA 2365 1643 5 60 all 860 ZCTA5 99929
从2010年人口普查开始。用download_census(\"decennial\",2010,\"US\")
下载国家数据,然后:
zip_2010 <- read_decennial(
year = 2010,table_contents = c(
\"white = P0030002\",\"black = P0030003\",\"asian = P0030005\"
),summary_level = \"860\"
)
# lon lat ZCTA5 state population white black asian GEOCOMP SUMLEV
# 1: -66.74996 18.18056 00601 NA 18570 17285 572 5 all 860
# 2: -67.17613 18.36227 00602 NA 41520 35980 2210 22 all 860
# 3: -67.11989 18.45518 00603 NA 54689 45348 4141 85 all 860
# 4: -66.93291 18.15835 00606 NA 6615 5883 314 3 all 860
# 5: -67.12587 18.29096 00610 NA 29016 23796 2083 37 all 860
# ---
# 33116: -130.04103 56.00232 99923 NA 87 79 0 0 all 860
# 33117: -132.94593 55.55020 99925 NA 819 350 2 4 all 860
# 33118: -131.47074 55.13807 99926 NA 1460 145 6 2 all 860
# 33119: -133.45792 56.23906 99927 NA 94 74 0 0 all 860
# 33120: -131.60683 56.41383 99929 NA 2338 1691 3 33 all 860
, 最好的选择可能是美国人口普查局的TIGER / Line shapefile。它们在州一级具有2010年的邮政编码制表区shapefile(ZCTA5),可能足以满足您的目的。
人口普查数据本身可以在American FactFinder中找到。例如,您可以获取县以下级别(即城市/城镇)的人口估算值,而不能获得邮政编码级别的直接人口估算值。我不知道您的数据集的详细信息,但是一种解决方案可能需要使用关系表,这些关系表也可以作为TIGER / Line数据的一部分使用,或者在空间上将包含人口普查数据的地名(子县shapefile)连接起来)和ZCTA5代码。
从元数据中注意:\“这些产品可以在产品或出版物中免费使用,但是必须向美国人口普查局确认来源。”
高温超导
, 简单的循环即可获取邮政编码级别的填充。但是,您需要获取一把钥匙。现在是美国的。
masterdata <- data.table()
for(z in 1:length(ziplist)){
print(z)
textt <- paste0(\"http://api.opendatanetwork.com/data/v1/values?variable=demographics.population.count&entity_id=8600000US\",ziplist[z],\"&forecast=3&describe=false&format=&app_token=YOURKEYHERE\")
errorornot <- try(jsonlite::fromJSON(textt),silent=T)
if(is(errorornot,\"try-error\")) next
data <- jsonlite::fromJSON(textt)
data <- as.data.table(data$data)
zipcode <- data[1,2]
data <- data[2:nrow(data)]
setnames(data,c(\"Year\",\"Population\",\"Forecasted\"))
data[,ZipCodeQuery:=zipcode]
data[,ZipCodeData:=ziplist[z]]
masterdata <- rbind(masterdata,data)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。