R censusapi函数引入了NA

时间:2018-07-25 20:28:01

标签: r

我正在使用R的censusapi软件包从美国人口普查局的经济普查中下载数据,特别是2012年的数据。其中一些列读入R并带有强制性引入的NA,这显然是因为R假定使用的数据类型不合适。简而言之,如何将getCensus API调用与指定的变量类型集成在一起?

具体来说,变量“ NAICS2012_TTL”和某些情况下的“ NAICS2012”以NA的形式读入,不应读入。第一个完全是R坚持应该为数字的文本字段。第二个是一系列应视为文本的数字,其中包括一些连字符的数字,它们读作NA。如何告诉R提取此数据而不给它不适当的数据类型?代码如下。您需要一个Census API密钥才能进行测试:

library("censusapi")
myFile<-getCensus(name="ewks",vintage=2012,key=("YOURKEYHERE"),
              vars = c("EMP","EMP_F","EMP_S","ESTAB","ESTAB_F","GEO_ID","GEO_TTL","GEOTYPE","NAICS2012","NAICS2012_TTL","OPTAX","PAYANN","PAYANN_F","PLACE"),region="place:*", regionin="state:01")

我尝试使myFile作为data.frame并在该过程中指定colClasses失败。我还阅读了我能找到的有关censusapi软件包的所有支持文档,但无济于事。

1 个答案:

答案 0 :(得分:0)

经过几个小时的反复试验,我得出的结论是,censusapi软件包更适合ACS数据,并且对于经济普查数据而言效果不佳。需要明确的是,经济普查数据是API支持的普查局数据集。但是,censusapi软件包将某些字段转换为经济普查数据的NA。

为了更成功地使用其API将经济普查读入R,我转而使用“ curl”和“ jsonlite”软件包。这是起作用的脚本。编写该代码是为了下载所有位置的NAICS代码22数据。您可以使用apply函数遍历其他NAICS代码。

library(curl)
library(jsonlite)
curl_download("https://api.census.gov/data/2012/ewks?get=EMP,NAICS2012_TTL,OPTAX,ESTAB,PAYANN,RCPTOT,GEO_TTL&for=place:*&NAICS2012=22      &key=YOURKEYHERE",naics_22)
mymatrix <- fromJSON(naics_22)
matrix2<-data.frame(mymatrix)
write.csv(matrix2,"EC22.csv")