Postcode demographic in R

I could achieve my goals “a long way”, but I hope to stay completely inside R. I am looking to add demographic census data by zip code to the records in my database. I know that R has several census-based packages, but if I am missing something, this data does not seem to exist at the zip code level and it does not intuitively merge with the existing data frame.

In short, can this be done in R, or is it my best approach to capture data elsewhere and read it in R?

Any help would be greatly appreciated!

+5
source share
5 answers

, . .

- zipcode (). , . zipcodes, , MSA, muSA CSA. MSA, muSA CSA, . , , .

, CRA FSA ( A1A 1A1). , , IRS , , , , CSA, .

:

+6

, FactFinder . , .

, , . .

" ". , "ZCTA5". ZCTA5 ( ZCTA) :

  • ZCTA PO Box - , 42 000 32 000 ZCTA.
  • ZCTA, , , . ZCTA, . , , ZCTA.
+3

, , U.S. TIGER/ . - (ZCTA5) 2010 , .

American FactFinder. , - (, /), . , , TIGER/Line, , , , ( ) ZCTA5.

: " , ".

0

R totalcensus (https://github.com/GL-Li/totalcensus), ACS .

, , ( ) 2010 2015 ACS 5- .

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,
    states = "US",
    table_contents = c(
        "white = P0030002", 
        "black = P0030003",
        "asian = P0030005"
    ),
    geo_headers = "ZCTA5",
    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
0

, . , . .

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)

    }
0

All Articles