A => README.md +44 -0
@@ 1,44 @@
+# Chicago
+
+A demographic and socioeconomic profile of Chicago,
+replicating the one displayed on
+[Census Reporter](https://censusreporter.org/profiles/16000US1714000-chicago-il/).
+Notably that portal uses ACS 1 year estimates, while 5 year estimates for
+2021 are available and generally considered more reliable.
+
+
+## Data
+
+See the `data` directory for more information on obtaining data for this
+project. I will not distribute data with this repository.
+
+
+## Analysis
+
+See the `src` directory for the source code used here.
+
+
+## Issues and Notes
+
+The continuous data for when a respondent moved into their current housing unit
+is not publicly available, so I cannot recreate that table/chart.
+
+I do not presently understand how to replicate *Number of housing units*,
+or perhaps more accurately I don't understand how this quantity differs from
+*Number of households* in any meaningful, Census-related way.
+
+Something is wrong with the official profile's tabulation of house values.
+(See *Value of owner-occupied housing units*).
+The easiest way to demonstrate this is to look at the top bucket.
+The *Over $1M* item's total is 14,010.
+Following the link to Table B25075, however, reveals that 14,010 is the total
+for just *$1,000,000 to $1,499,999*.
+Potentially this is a matter of topcoding policy differing between the two
+backends?
+
+The pandemic caused a few rapid changes to demography.
+It took me a while to convince myself that my recreation was not in error.
+The most notable table is *Means of transportation*, especially as seen in the
+*Worked at home* item.
+But other Census Reporter tables corroborate my numbers.
+
A => data/.gitignore +4 -0
@@ 1,4 @@
+*.dat
+*.cbk
+*.sas
+
A => data/README.md +115 -0
@@ 1,115 @@
+# ACS 2021 PUMS
+
+
+## IPUMS
+
+The ACS databases used here were created and maintained by IPUMS USA,
+University of Minnesota. Credit for the data belongs with:
+ + Steven Ruggles, Sarah Flood, Matthew Sobek, Danika Brockman, Grace Cooper, Stephanie Richards, and Megan Schouweiler. IPUMS USA: Version 13.0 [dataset]. Minneapolis, MN: IPUMS, 2023.
+https://doi.org/10.18128/D010.V13.0
+ + Steven Ruggles, Catherine A. Fitch, Ronald Goeken, J. David Hacker, Matt A. Nelson, Evan Roberts, Megan Schouweiler and Matthew Sobek. IPUMS Ancestry Full Count Data: Version 3.0 [dataset]. Minneapolis, MN: IPUMS, 2021.
+https://doi.org/10.18128/D014.V3.0
+
+
+## Household Records
+
+Download a hierachical dataset from IPUMS containing these variables:
+ + STATEFIP
+ + PUMA
+ + REPWT
+ + ADJHSG
+ + NP
+ + TEN
+ + VACS
+ + VALP
+ + SVAL
+ + BLD
+
+It should use the ACS 2021 5-year sample.
+
+Optionally, subset the extraction to just Illinois cases (based on `STATEFIP`).
+I subset later the cases anyway.
+
+Also collect the SAS read instructions and the basic codebook.
+
+```bash
+$ gunzip usa_00006.dat.gz
+$ wc -l usa_00006.dat
+293143 usa_00006.dat
+```
+
+Now I manipulate the codebook into something useful for `awk(1)`.
+
+```bash
+$ sed -e '11,110!d' usa_00006.cbk | awk '{ print $4 }' | xargs echo
+1 4 4 6 8 13 10 1 13 2 5 12 1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 2 2 1 1 7 1
+```
+
+Examine the `STATEFIP` field. If I hadn't subset cases in the IPUMS portal,
+I would do that now.
+
+```bash
+$ awk 'BEGIN {FIELDWIDTHS="1 4 4 6 8 13 10 1 13 2 5 12 1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 2 2 1 1 7 1"} {if ($1=="H"){print $10}}' usa_00006.dat | sort -n | uniq -c
+ 293143 17
+```
+
+Now subset cases based on the `PUMA` field.
+
+```bash
+$ awk 'BEGIN {FIELDWIDTHS="1 4 4 6 8 13 10 1 13 2 5 12 1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 2 2 1 1 7 1"} $11~/035(0[1234]|2[0123456789]|3[012])/' usa_00006.dat >usa_00006_chi.dat
+$ wc -l usa_00006_chi.dat
+52097 usa_00006_chi.dat
+```
+
+With this, I have a household data file that is restricted to just Chicago.
+
+
+## Person Records
+
+Download a rectangular dataset from IPUMS containing these variables:
+ + STATEIP
+ + PUMA
+ + REPWTP
+ + HHT
+ + ADJINC
+ + AGEP
+ + FER
+ + JWMNP
+ + JWRIP
+ + JWTRNS
+ + LANX
+ + MAR
+ + MIG
+ + MLPA
+ + MLPB
+ + MLPCD
+ + MLPE
+ + MLPFG
+ + MLPH
+ + MLPJ
+ + SCHL
+ + SEX
+ + HISP
+ + LANP
+ + MIGPUMA
+ + MIGSP
+ + NATIVITY
+ + PINCP
+ + POBP
+ + POVPIP
+ + RAC1P
+
+Follow all the same preparation steps as with the household extraction.
+
+```bash
+$ wc -l usa_00007.dat
+621164 usa_00007.dat
+$ sed -e '11,132!d' usa_00007.cbk | awk '{ print $4 }' | xargs echo
+4 4 6 8 13 10 13 2 5 12 1 1 4 10 1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 2 1 3 2 2 1 1 1 1 1 1 1 1 1 1 2 1 2 4 5 3 1 7 3 3 1
+$ awk 'BEGIN {FIELDWIDTHS="4 4 6 8 13 10 13 2 5 12 1 1 4 10 1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 2 1 3 2 2 1 1 1 1 1 1 1 1 1 1 2 1 2 4 5 3 1 7 3 3 1"} {print $8}' usa_00007.dat | sort -n | uniq -c
+ 621164 17
+$ awk 'BEGIN {FIELDWIDTHS="4 4 6 8 13 10 13 2 5 12 1 1 4 10 1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 2 1 3 2 2 1 1 1 1 1 1 1 1 1 1 2 1 2 4 5 3 1 7 3 3 1"} $9~/035(0[1234]|2[0123456789]|3[012])/' usa_00007.dat >usa_00007_chi.dat
+$ wc -l usa_00007_chi.dat
+101501 usa_00007_chi.dat
+```
+
A => src/01_Read.sas +1443 -0
@@ 1,1443 @@
+/*
+ This is a vendored copy of two import syntax files generated by IPUMS.
+ - librefs and filenames are updated
+ - duplicative formats are removed
+ - scalar formats are removed
+ - added some indentation
+*/
+
+/* NOTE: updated references */
+libname IPUMS "~";
+filename dat_h "~/usa_00006_chi.dat";
+filename dat_p "~/usa_00007_chi.dat";
+
+proc format cntlout = IPUMS.raw_h_f;
+
+ /* NOTE: killed YEAR_f format */
+ /* NOTE: killed SAMPLE_f format */
+
+ value REPWT_f
+ 0 = "Repwt not available"
+ 1 = "Repwt available"
+ ;
+
+ value STATEFIP_f
+ 01 = "Alabama"
+ 02 = "Alaska"
+ 04 = "Arizona"
+ 05 = "Arkansas"
+ 06 = "California"
+ 08 = "Colorado"
+ 09 = "Connecticut"
+ 10 = "Delaware"
+ 11 = "District of Columbia"
+ 12 = "Florida"
+ 13 = "Georgia"
+ 15 = "Hawaii"
+ 16 = "Idaho"
+ 17 = "Illinois"
+ 18 = "Indiana"
+ 19 = "Iowa"
+ 20 = "Kansas"
+ 21 = "Kentucky"
+ 22 = "Louisiana"
+ 23 = "Maine"
+ 24 = "Maryland"
+ 25 = "Massachusetts"
+ 26 = "Michigan"
+ 27 = "Minnesota"
+ 28 = "Mississippi"
+ 29 = "Missouri"
+ 30 = "Montana"
+ 31 = "Nebraska"
+ 32 = "Nevada"
+ 33 = "New Hampshire"
+ 34 = "New Jersey"
+ 35 = "New Mexico"
+ 36 = "New York"
+ 37 = "North Carolina"
+ 38 = "North Dakota"
+ 39 = "Ohio"
+ 40 = "Oklahoma"
+ 41 = "Oregon"
+ 42 = "Pennsylvania"
+ 44 = "Rhode Island"
+ 45 = "South Carolina"
+ 46 = "South Dakota"
+ 47 = "Tennessee"
+ 48 = "Texas"
+ 49 = "Utah"
+ 50 = "Vermont"
+ 51 = "Virginia"
+ 53 = "Washington"
+ 54 = "West Virginia"
+ 55 = "Wisconsin"
+ 56 = "Wyoming"
+ 61 = "Maine-New Hampshire-Vermont"
+ 62 = "Massachusetts-Rhode Island"
+ 63 = "Minnesota-Iowa-Missouri-Kansas-Nebraska-S.Dakota-N.Dakota"
+ 64 = "Maryland-Delaware"
+ 65 = "Montana-Idaho-Wyoming"
+ 66 = "Utah-Nevada"
+ 67 = "Arizona-New Mexico"
+ 68 = "Alaska-Hawaii"
+ 72 = "Puerto Rico"
+ 97 = "Military/Mil. Reservation"
+ 99 = "State not identified"
+ ;
+
+ value GQ_f
+ 0 = "Vacant unit"
+ 1 = "Households under 1970 definition"
+ 2 = "Additional households under 1990 definition"
+ 3 = "Group quarters--Institutions"
+ 4 = "Other group quarters"
+ 5 = "Additional households under 2000 definition"
+ 6 = "Fragment"
+ ;
+
+ /* NOTE: killed US2021C_ADJHSG_f format */
+
+ value $ US2021C_NP_f
+ "00" = "Vacant unit"
+ "01" = "One person in household or any person in group quarters"
+ "10" = "[no label]"
+ "11" = "[no label]"
+ "12" = "[no label]"
+ "13" = "[no label]"
+ "14" = "[no label]"
+ "15" = "[no label]"
+ "16" = "[no label]"
+ "17" = "[no label]"
+ "18" = "[no label]"
+ "19" = "[no label]"
+ "20" = "[no label]"
+ "B0" = "[no label]"
+ "B1" = "[no label]"
+ "B2" = "[no label]"
+ "B3" = "[no label]"
+ "B4" = "[no label]"
+ "B5" = "[no label]"
+ "B6" = "[no label]"
+ "B7" = "[no label]"
+ "B8" = "[no label]"
+ "B9" = "[no label]"
+ "02" = "[no label]"
+ "03" = "[no label]"
+ "04" = "[no label]"
+ "05" = "[no label]"
+ "06" = "[no label]"
+ "07" = "[no label]"
+ "08" = "[no label]"
+ "09" = "[no label]"
+ ;
+
+ value $ US2021C_BLD_f
+ "BB" = "N/A (GQ)"
+ "01" = "Mobile home or trailer"
+ "02" = "One-family house detached"
+ "03" = "One-family house attached"
+ "04" = "2 Apartments"
+ "05" = "3-4 Apartments"
+ "06" = "5-9 Apartments"
+ "07" = "10-19 Apartments"
+ "08" = "20-49 Apartments"
+ "09" = "50 or more apartments"
+ "10" = "Boat, RV, van, etc."
+ ;
+
+ value $ US2021C_TEN_f
+ "B" = "N/A (GQ/vacant)"
+ "1" = "Owned with mortgage or loan (include home equity loans)"
+ "2" = "Owned free and clear"
+ "3" = "Rented"
+ "4" = "Occupied without payment of rent"
+ ;
+
+ value $ US2021C_VACS_f
+ "B" = "N/A (GQ/occupied)"
+ "1" = "For rent"
+ "2" = "Rented, not occupied"
+ "3" = "For sale only"
+ "4" = "Sold, not occupied"
+ "5" = "For seasonal/recreational/occasional use"
+ "6" = "For migrant workers"
+ "7" = "Other vacant"
+ ;
+
+ value $ US2021C_SVAL_f
+ "B" = "N/A (GQ/ vacant units, except 'for-sale-only' and 'sold, not occupied'/not owned or being bought)"
+ "0" = "A single family home on 10 or more acres or any other type of building, including mobile homes, with"
+ " no regard to acreage."
+ "1" = "A single family home on less than 10 acres."
+ ;
+
+run;
+
+data IPUMS.raw_h;
+ infile dat_h pad missover lrecl=581;
+
+ input
+ RECTYPE $ 1-1 @
+ ;
+
+ if RECTYPE = "H" then do;
+ input
+ RECTYPE $ 1-1
+ YEAR 2-5
+ MULTYEAR 6-9
+ SAMPLE 10-15
+ SERIAL 16-23
+ CBSERIAL 24-36
+ HHWT 37-46 .2
+ REPWT 47-47
+ CLUSTER 48-60
+ STATEFIP 61-62
+ PUMA 63-67
+ STRATA 68-79
+ GQ 80-80
+ REPWT1 81-86
+ REPWT2 87-92
+ REPWT3 93-98
+ REPWT4 99-104
+ REPWT5 105-110
+ REPWT6 111-116
+ REPWT7 117-122
+ REPWT8 123-128
+ REPWT9 129-134
+ REPWT10 135-140
+ REPWT11 141-146
+ REPWT12 147-152
+ REPWT13 153-158
+ REPWT14 159-164
+ REPWT15 165-170
+ REPWT16 171-176
+ REPWT17 177-182
+ REPWT18 183-188
+ REPWT19 189-194
+ REPWT20 195-200
+ REPWT21 201-206
+ REPWT22 207-212
+ REPWT23 213-218
+ REPWT24 219-224
+ REPWT25 225-230
+ REPWT26 231-236
+ REPWT27 237-242
+ REPWT28 243-248
+ REPWT29 249-254
+ REPWT30 255-260
+ REPWT31 261-266
+ REPWT32 267-272
+ REPWT33 273-278
+ REPWT34 279-284
+ REPWT35 285-290
+ REPWT36 291-296
+ REPWT37 297-302
+ REPWT38 303-308
+ REPWT39 309-314
+ REPWT40 315-320
+ REPWT41 321-326
+ REPWT42 327-332
+ REPWT43 333-338
+ REPWT44 339-344
+ REPWT45 345-350
+ REPWT46 351-356
+ REPWT47 357-362
+ REPWT48 363-368
+ REPWT49 369-374
+ REPWT50 375-380
+ REPWT51 381-386
+ REPWT52 387-392
+ REPWT53 393-398
+ REPWT54 399-404
+ REPWT55 405-410
+ REPWT56 411-416
+ REPWT57 417-422
+ REPWT58 423-428
+ REPWT59 429-434
+ REPWT60 435-440
+ REPWT61 441-446
+ REPWT62 447-452
+ REPWT63 453-458
+ REPWT64 459-464
+ REPWT65 465-470
+ REPWT66 471-476
+ REPWT67 477-482
+ REPWT68 483-488
+ REPWT69 489-494
+ REPWT70 495-500
+ REPWT71 501-506
+ REPWT72 507-512
+ REPWT73 513-518
+ REPWT74 519-524
+ REPWT75 525-530
+ REPWT76 531-536
+ REPWT77 537-542
+ REPWT78 543-548
+ REPWT79 549-554
+ REPWT80 555-560
+ US2021C_ADJHSG 561-567 .6 /* NOTE: changed informat from string to 8.6 numeric */
+ US2021C_NP $ 568-569
+ US2021C_BLD $ 570-571
+ US2021C_TEN $ 572-572
+ US2021C_VACS $ 573-573
+ US2021C_VALP $ 574-580
+ US2021C_SVAL $ 581-581
+ ;
+ output;
+ end;
+
+ label
+ RECTYPE = "Record type"
+ YEAR = "Census year"
+ MULTYEAR = "Actual year of survey, multi-year ACS/PRCS"
+ SAMPLE = "IPUMS sample identifier"
+ SERIAL = "Household serial number"
+ CBSERIAL = "Original Census Bureau household serial number"
+ HHWT = "Household weight"
+ REPWT = "Household replicate weights [80 variables]"
+ CLUSTER = "Household cluster for variance estimation"
+ STATEFIP = "State (FIPS code)"
+ PUMA = "Public Use Microdata Area"
+ STRATA = "Household strata for variance estimation"
+ GQ = "Group quarters status"
+ REPWT1 = "Household replicate weight 1"
+ REPWT2 = "Household replicate weight 2"
+ REPWT3 = "Household replicate weight 3"
+ REPWT4 = "Household replicate weight 4"
+ REPWT5 = "Household replicate weight 5"
+ REPWT6 = "Household replicate weight 6"
+ REPWT7 = "Household replicate weight 7"
+ REPWT8 = "Household replicate weight 8"
+ REPWT9 = "Household replicate weight 9"
+ REPWT10 = "Household replicate weight 10"
+ REPWT11 = "Household replicate weight 11"
+ REPWT12 = "Household replicate weight 12"
+ REPWT13 = "Household replicate weight 13"
+ REPWT14 = "Household replicate weight 14"
+ REPWT15 = "Household replicate weight 15"
+ REPWT16 = "Household replicate weight 16"
+ REPWT17 = "Household replicate weight 17"
+ REPWT18 = "Household replicate weight 18"
+ REPWT19 = "Household replicate weight 19"
+ REPWT20 = "Household replicate weight 20"
+ REPWT21 = "Household replicate weight 21"
+ REPWT22 = "Household replicate weight 22"
+ REPWT23 = "Household replicate weight 23"
+ REPWT24 = "Household replicate weight 24"
+ REPWT25 = "Household replicate weight 25"
+ REPWT26 = "Household replicate weight 26"
+ REPWT27 = "Household replicate weight 27"
+ REPWT28 = "Household replicate weight 28"
+ REPWT29 = "Household replicate weight 29"
+ REPWT30 = "Household replicate weight 30"
+ REPWT31 = "Household replicate weight 31"
+ REPWT32 = "Household replicate weight 32"
+ REPWT33 = "Household replicate weight 33"
+ REPWT34 = "Household replicate weight 34"
+ REPWT35 = "Household replicate weight 35"
+ REPWT36 = "Household replicate weight 36"
+ REPWT37 = "Household replicate weight 37"
+ REPWT38 = "Household replicate weight 38"
+ REPWT39 = "Household replicate weight 39"
+ REPWT40 = "Household replicate weight 40"
+ REPWT41 = "Household replicate weight 41"
+ REPWT42 = "Household replicate weight 42"
+ REPWT43 = "Household replicate weight 43"
+ REPWT44 = "Household replicate weight 44"
+ REPWT45 = "Household replicate weight 45"
+ REPWT46 = "Household replicate weight 46"
+ REPWT47 = "Household replicate weight 47"
+ REPWT48 = "Household replicate weight 48"
+ REPWT49 = "Household replicate weight 49"
+ REPWT50 = "Household replicate weight 50"
+ REPWT51 = "Household replicate weight 51"
+ REPWT52 = "Household replicate weight 52"
+ REPWT53 = "Household replicate weight 53"
+ REPWT54 = "Household replicate weight 54"
+ REPWT55 = "Household replicate weight 55"
+ REPWT56 = "Household replicate weight 56"
+ REPWT57 = "Household replicate weight 57"
+ REPWT58 = "Household replicate weight 58"
+ REPWT59 = "Household replicate weight 59"
+ REPWT60 = "Household replicate weight 60"
+ REPWT61 = "Household replicate weight 61"
+ REPWT62 = "Household replicate weight 62"
+ REPWT63 = "Household replicate weight 63"
+ REPWT64 = "Household replicate weight 64"
+ REPWT65 = "Household replicate weight 65"
+ REPWT66 = "Household replicate weight 66"
+ REPWT67 = "Household replicate weight 67"
+ REPWT68 = "Household replicate weight 68"
+ REPWT69 = "Household replicate weight 69"
+ REPWT70 = "Household replicate weight 70"
+ REPWT71 = "Household replicate weight 71"
+ REPWT72 = "Household replicate weight 72"
+ REPWT73 = "Household replicate weight 73"
+ REPWT74 = "Household replicate weight 74"
+ REPWT75 = "Household replicate weight 75"
+ REPWT76 = "Household replicate weight 76"
+ REPWT77 = "Household replicate weight 77"
+ REPWT78 = "Household replicate weight 78"
+ REPWT79 = "Household replicate weight 79"
+ REPWT80 = "Household replicate weight 80"
+ US2021C_ADJHSG = "Adjustment factor for housing dollar amounts (6 implied decimal places)"
+ US2021C_NP = "Number of persons in this household"
+ US2021C_BLD = "Units in structure"
+ US2021C_TEN = "Tenure"
+ US2021C_VACS = "Vacancy status"
+ US2021C_VALP = "Property value"
+ US2021C_SVAL = "Specified owner unit"
+ ;
+
+ format
+ REPWT REPWT_f.
+ STATEFIP STATEFIP_f.
+ GQ GQ_f.
+ US2021C_NP US2021C_NP_f.
+ US2021C_BLD US2021C_BLD_f.
+ US2021C_TEN US2021C_TEN_f.
+ US2021C_VACS US2021C_VACS_f.
+ US2021C_SVAL US2021C_SVAL_f.
+ ;
+
+ format
+ CBSERIAL 13.
+ HHWT 11.2
+ CLUSTER 13.
+ STRATA 12.
+ ;
+
+run;
+
+proc format cntlout = IPUMS.raw_p_f;
+
+ /* NOTE: killed YEAR_f format */
+ /* NOTE: killed SAMPLE_f format */
+
+ value STATEFIP_f
+ 01 = "Alabama"
+ 02 = "Alaska"
+ 04 = "Arizona"
+ 05 = "Arkansas"
+ 06 = "California"
+ 08 = "Colorado"
+ 09 = "Connecticut"
+ 10 = "Delaware"
+ 11 = "District of Columbia"
+ 12 = "Florida"
+ 13 = "Georgia"
+ 15 = "Hawaii"
+ 16 = "Idaho"
+ 17 = "Illinois"
+ 18 = "Indiana"
+ 19 = "Iowa"
+ 20 = "Kansas"
+ 21 = "Kentucky"
+ 22 = "Louisiana"
+ 23 = "Maine"
+ 24 = "Maryland"
+ 25 = "Massachusetts"
+ 26 = "Michigan"
+ 27 = "Minnesota"
+ 28 = "Mississippi"
+ 29 = "Missouri"
+ 30 = "Montana"
+ 31 = "Nebraska"
+ 32 = "Nevada"
+ 33 = "New Hampshire"
+ 34 = "New Jersey"
+ 35 = "New Mexico"
+ 36 = "New York"
+ 37 = "North Carolina"
+ 38 = "North Dakota"
+ 39 = "Ohio"
+ 40 = "Oklahoma"
+ 41 = "Oregon"
+ 42 = "Pennsylvania"
+ 44 = "Rhode Island"
+ 45 = "South Carolina"
+ 46 = "South Dakota"
+ 47 = "Tennessee"
+ 48 = "Texas"
+ 49 = "Utah"
+ 50 = "Vermont"
+ 51 = "Virginia"
+ 53 = "Washington"
+ 54 = "West Virginia"
+ 55 = "Wisconsin"
+ 56 = "Wyoming"
+ 61 = "Maine-New Hampshire-Vermont"
+ 62 = "Massachusetts-Rhode Island"
+ 63 = "Minnesota-Iowa-Missouri-Kansas-Nebraska-S.Dakota-N.Dakota"
+ 64 = "Maryland-Delaware"
+ 65 = "Montana-Idaho-Wyoming"
+ 66 = "Utah-Nevada"
+ 67 = "Arizona-New Mexico"
+ 68 = "Alaska-Hawaii"
+ 72 = "Puerto Rico"
+ 97 = "Military/Mil. Reservation"
+ 99 = "State not identified"
+ ;
+
+ value GQ_f
+ 0 = "Vacant unit"
+ 1 = "Households under 1970 definition"
+ 2 = "Additional households under 1990 definition"
+ 3 = "Group quarters--Institutions"
+ 4 = "Other group quarters"
+ 5 = "Additional households under 2000 definition"
+ 6 = "Fragment"
+ ;
+
+ value $ US2021C_HHT_f
+ "B" = "N/A (GQ/vacant)"
+ "1" = "Married couple household"
+ "2" = "Other family household: Male householder, no spouse present"
+ "3" = "Other family household: Female householder, no spouse present"
+ "4" = "Nonfamily household: Male householder: Living alone"
+ "5" = "Nonfamily household: Male householder: Not living alone"
+ "6" = "Nonfamily household: Female householder: Living alone"
+ "7" = "Nonfamily household: Female householder: Not living alone"
+ ;
+
+ value REPWTP_f
+ 0 = "Repwtp not available"
+ 1 = "Repwtp available"
+ ;
+
+ /* NOTE: killed US2021C_ADJINCP_f format */
+
+ /* NOTE: killed US2021C_AGEP_f format */
+
+ value $ US2021C_FER_f
+ "B" = "N/A (less than 15 years/greater than 50 years/ male)"
+ "1" = "Yes"
+ "2" = "No"
+ ;
+
+ /* NOTE: killed US2021C_JWMNP_f format */
+
+ /* NOTE: killed US2021C_JWRIP_f format */
+
+ value $ US2021C_JWTRNS_f
+ "BB" = "N/A (not a worker-not in the labor force, including persons under 16 years; unemployed; employed, wi"
+ "th a job but not at work; Armed Forces, with a job but not at work)"
+ "01" = "Car, truck, or van"
+ "02" = "Bus"
+ "03" = "Subway or elevated rail"
+ "04" = "Long-distance train or commuter rail"
+ "05" = "Light rail, streetcar, or trolley"
+ "06" = "Ferryboat"
+ "07" = "Taxicab"
+ "08" = "Motorcycle"
+ "09" = "Bicycle"
+ "10" = "Walked"
+ "11" = "Worked from home"
+ "12" = "Other method"
+ ;
+
+ value $ US2021C_LANX_f
+ "B" = "N/A (less than 5 years old)"
+ "1" = "Yes, speaks another language"
+ "2" = "No, speaks only English"
+ ;
+
+ value $ US2021C_MAR_f
+ "1" = "Married"
+ "2" = "Widowed"
+ "3" = "Divorced"
+ "4" = "Separated"
+ "5" = "Never married or under 15 years old"
+ ;
+
+ value $ US2021C_MIG_f
+ "B" = "N/A (less than 1 year old)"
+ "1" = "Yes, same house (nonmovers)"
+ "2" = "No, outside US and Puerto Rico"
+ "3" = "No, different house in US or Puerto Rico"
+ ;
+
+ value $ US2021C_MLPA_f
+ "B" = "N/A (less than 17 years old/no active duty)"
+ "0" = "Did not serve this period"
+ "1" = "Served this period"
+ ;
+
+ value $ US2021C_MLPB_f
+ "B" = "N/A (less than 17 years old/no active duty)"
+ "0" = "Did not serve this period"
+ "1" = "Served this period"
+ ;
+
+ value $ US2021C_MLPCD_f
+ "B" = "N/A (less than 17 years old/no active duty)"
+ "0" = "Did not serve this period"
+ "1" = "Served this period"
+ ;
+
+ value $ US2021C_MLPE_f
+ "B" = "N/A (less than 17 years old/no active duty)"
+ "0" = "Did not serve this period"
+ "1" = "Served this period"
+ ;
+
+ value $ US2021C_MLPFG_f
+ "B" = "N/A (less than 17 years old/no active duty)"
+ "0" = "Did not serve this period"
+ "1" = "Served this period"
+ ;
+
+ value $ US2021C_MLPH_f
+ "B" = "N/A (less than 17 years old/no active duty)"
+ "0" = "Did not serve this period"
+ "1" = "Served this period"
+ ;
+
+ value $ US2021C_MLPJ_f
+ "B" = "N/A (less than 17 years old/no active duty)"
+ "0" = "Did not serve this period"
+ "1" = "Served this period"
+ ;
+
+ value $ US2021C_SCHL_f
+ "BB" = "N/A (less than 3 years old)"
+ "01" = "No schooling completed"
+ "02" = "Nursery school, preschool"
+ "03" = "Kindergarten"
+ "04" = "Grade 1"
+ "05" = "Grade 2"
+ "06" = "Grade 3"
+ "07" = "Grade 4"
+ "08" = "Grade 5"
+ "09" = "Grade 6"
+ "10" = "Grade 7"
+ "11" = "Grade 8"
+ "12" = "Grade 9"
+ "13" = "Grade 10"
+ "14" = "Grade 11"
+ "15" = "12th grade - no diploma"
+ "16" = "Regular high school diploma"
+ "17" = "GED or alternative credential"
+ "18" = "Some college, but less than 1 year"
+ "19" = "1 or more years of college credit, no degree"
+ "20" = "Associate's degree"
+ "21" = "Bachelor's degree"
+ "22" = "Master's degree"
+ "23" = "Professional degree beyond a bachelor's degree"
+ "24" = "Doctorate degree"
+ ;
+
+ value $ US2021C_SEX_f
+ "1" = "Male"
+ "2" = "Female"
+ ;
+
+ value $ US2021C_HISP_f
+ "01" = "Not Spanish/Hispanic/Latino"
+ "02" = "Mexican"
+ "03" = "Puerto Rican"
+ "04" = "Cuban"
+ "05" = "Dominican"
+ "06" = "Costa Rican"
+ "07" = "Guatemalan"
+ "08" = "Honduran"
+ "09" = "Nicaraguan"
+ "10" = "Panamanian"
+ "11" = "Salvadoran"
+ "12" = "Other Central American"
+ "13" = "Argentinean"
+ "14" = "Bolivian"
+ "15" = "Chilean"
+ "16" = "Colombian"
+ "17" = "Ecuadorian"
+ "18" = "Paraguayan"
+ "19" = "Peruvian"
+ "20" = "Uruguayan"
+ "21" = "Venezuelan"
+ "22" = "Other South American"
+ "23" = "Spaniard"
+ "24" = "All Other Spanish/Hispanic/Latino"
+ ;
+
+ value $ US2021C_LANP_f
+ "BBBB" = "N/A (GQ/vacant)"
+ "1000" = "Jamaican Creole English"
+ "1025" = "Other English-based Creole languages"
+ "1055" = "Haitian"
+ "1069" = "Kabuverdianu"
+ "1110" = "German"
+ "1120" = "Swiss German"
+ "1125" = "Pennsylvania German"
+ "1130" = "Yiddish"
+ "1132" = "Dutch"
+ "1134" = "Afrikaans"
+ "1140" = "Swedish"
+ "1141" = "Danish"
+ "1142" = "Norwegian"
+ "1155" = "Italian"
+ "1170" = "French"
+ "1175" = "Cajun French"
+ "1200" = "Spanish"
+ "1210" = "Portuguese"
+ "1220" = "Romanian"
+ "1231" = "Irish"
+ "1235" = "Greek"
+ "1242" = "Albanian"
+ "1250" = "Russian"
+ "1260" = "Ukrainian"
+ "1262" = "Czech"
+ "1263" = "Slovak"
+ "1270" = "Polish"
+ "1273" = "Bulgarian"
+ "1274" = "Macedonian"
+ "1275" = "Serbocroatian"
+ "1276" = "Bosnian"
+ "1277" = "Croatian"
+ "1278" = "Serbian"
+ "1281" = "Lithuanian"
+ "1283" = "Latvian"
+ "1288" = "Armenian"
+ "1290" = "Farsi"
+ "1292" = "Dari"
+ "1315" = "Kurdish"
+ "1327" = "Pashto"
+ "1340" = "India N.E.C."
+ "1350" = "Hindi"
+ "1360" = "Urdu"
+ "1380" = "Bengali"
+ "1420" = "Punjabi"
+ "1435" = "Konkani"
+ "1440" = "Marathi"
+ "1450" = "Gujarati"
+ "1500" = "Nepali"
+ "1525" = "Pakistan N.E.C."
+ "1530" = "Sinhala"
+ "1540" = "Other Indo-Iranian languages"
+ "1564" = "Other Indo-European languages"
+ "1565" = "Finnish"
+ "1582" = "Hungarian"
+ "1675" = "Turkish"
+ "1690" = "Mongolian"
+ "1730" = "Telugu"
+ "1737" = "Kannada"
+ "1750" = "Malayalam"
+ "1765" = "Tamil"
+ "1900" = "Khmer"
+ "1960" = "Vietnamese"
+ "1970" = "Chinese"
+ "2000" = "Mandarin"
+ "2030" = "Min Nan Chinese"
+ "2050" = "Cantonese"
+ "2100" = "Tibetan"
+ "2160" = "Burmese"
+ "2270" = "Chin languages"
+ "2350" = "Karen languages"
+ "2430" = "Thai"
+ "2475" = "Lao"
+ "2525" = "Iu Mien"
+ "2535" = "Hmong"
+ "2560" = "Japanese"
+ "2575" = "Korean"
+ "2715" = "Malay"
+ "2770" = "Indonesian"
+ "2850" = "Other languages of Asia"
+ "2910" = "Filipino"
+ "2920" = "Tagalog"
+ "2950" = "Cebuano"
+ "3150" = "Ilocano"
+ "3190" = "Other Philippine languages"
+ "3220" = "Chamorro"
+ "3270" = "Marshallese"
+ "3350" = "Chuukese"
+ "3420" = "Samoan"
+ "3500" = "Tongan"
+ "3570" = "Hawaiian"
+ "3600" = "Other Eastern Malayo-Polynesian languages"
+ "4500" = "Arabic"
+ "4545" = "Hebrew"
+ "4560" = "Assyrian Neo-Aramaic"
+ "4565" = "Chaldean Neo-Aramaic"
+ "4590" = "Amharic"
+ "4640" = "Tigrinya"
+ "4830" = "Oromo"
+ "4840" = "Somali"
+ "4880" = "Other Afro-Asiatic languages"
+ "4900" = "Nilo-Saharan languages"
+ "5150" = "Swahili"
+ "5345" = "Ganda"
+ "5525" = "Shona"
+ "5645" = "Other Bantu languages"
+ "5845" = "Manding languages"
+ "5900" = "Other Mande languages"
+ "5940" = "Fulah"
+ "5950" = "Wolof"
+ "6120" = "Akan (incl. Twi)"
+ "6205" = "Ga"
+ "6230" = "Gbe languages"
+ "6290" = "Yoruba"
+ "6300" = "Edoid languages"
+ "6370" = "Igbo"
+ "6500" = "Other Niger-Congo languages"
+ "6795" = "Other languages of Africa"
+ "6800" = "Aleut languages"
+ "6839" = "Ojibwa"
+ "6930" = "Apache languages"
+ "6933" = "Navajo"
+ "7019" = "Dakota languages"
+ "7032" = "Muskogean languages"
+ "7039" = "Keres"
+ "7050" = "Cherokee"
+ "7060" = "Uto-Aztecan languages"
+ "7124" = "Other Native North American languages"
+ "7300" = "Other Central and South American languages"
+ "9999" = "Other and unspecified languages"
+ ;
+
+ value $ US2021C_MIGSP_f
+ "BBB" = "N/A (person less than 1 year old/lived in same house 1 year ago)"
+ "001" = "Alabama/AL"
+ "002" = "Alaska/AK"
+ "004" = "Arizona/AZ"
+ "005" = "Arkansas/AR"
+ "006" = "California/CA"
+ "008" = "Colorado/CO"
+ "009" = "Connecticut/CT"
+ "010" = "Delaware/DE"
+ "011" = "District of Columbia/DC"
+ "012" = "Florida/FL"
+ "013" = "Georgia/GA"
+ "015" = "Hawaii/HI"
+ "016" = "Idaho/ID"
+ "017" = "Illinois/IL"
+ "018" = "Indiana/IN"
+ "019" = "Iowa/IA"
+ "020" = "Kansas/KS"
+ "021" = "Kentucky/KY"
+ "022" = "Louisiana/LA"
+ "023" = "Maine/ME"
+ "024" = "Maryland/MD"
+ "025" = "Massachusetts/MA"
+ "026" = "Michigan/MI"
+ "027" = "Minnesota/MN"
+ "028" = "Mississippi/MS"
+ "029" = "Missouri/MO"
+ "030" = "Montana/MT"
+ "031" = "Nebraska/NE"
+ "032" = "Nevada/NV"
+ "033" = "New Hampshire/NH"
+ "034" = "New Jersey/NJ"
+ "035" = "New Mexico/NM"
+ "036" = "New York/NY"
+ "037" = "North Carolina/NC"
+ "038" = "North Dakota/ND"
+ "039" = "Ohio/OH"
+ "040" = "Oklahoma/OK"
+ "041" = "Oregon/OR"
+ "042" = "Pennsylvania/PA"
+ "044" = "Rhode Island/RI"
+ "045" = "South Carolina/SC"
+ "046" = "South Dakota/SD"
+ "047" = "Tennessee/TN"
+ "048" = "Texas/TX"
+ "049" = "Utah/UT"
+ "050" = "Vermont/VT"
+ "051" = "Virginia/VA"
+ "053" = "Washington/WA"
+ "054" = "West Virginia/WV"
+ "055" = "Wisconsin/WI"
+ "056" = "Wyoming/WY"
+ "072" = "Puerto Rico"
+ "109" = "France"
+ "110" = "Germany"
+ "111" = "Northern Europe, Not Specified"
+ "113" = "Eastern Europe, Not Specified"
+ "114" = "Western Europe or Other Europe, Not Specified"
+ "120" = "Italy"
+ "134" = "Spain"
+ "138" = "United Kingdom, Excluding England"
+ "139" = "England"
+ "163" = "Russia"
+ "164" = "Ukraine"
+ "200" = "Afghanistan"
+ "207" = "China, Hong Kong, Macau And Paracel Islands"
+ "210" = "India"
+ "214" = "Israel"
+ "215" = "Japan"
+ "217" = "Korea"
+ "229" = "Nepal"
+ "231" = "Pakistan"
+ "233" = "Philippines"
+ "235" = "Saudi Arabia"
+ "240" = "Taiwan"
+ "242" = "Thailand"
+ "243" = "Turkey"
+ "245" = "United Arab Emirates"
+ "247" = "Vietnam"
+ "251" = "Eastern Asia, Not Specified"
+ "252" = "Western Asia, Not Specified"
+ "253" = "South Central Asia or Asia, Not Specified"
+ "301" = "Canada"
+ "303" = "Mexico"
+ "312" = "El Salvador"
+ "313" = "Guatemala"
+ "314" = "Honduras"
+ "317" = "Central America, Not Specified"
+ "327" = "Cuba"
+ "329" = "Dominican Republic"
+ "332" = "Haiti"
+ "333" = "Jamaica"
+ "344" = "Caribbean and North America, Not Specified"
+ "362" = "Brazil"
+ "364" = "Colombia"
+ "365" = "Ecuador"
+ "370" = "Peru"
+ "373" = "Venezuela"
+ "374" = "South America, Not Specified"
+ "414" = "Egypt"
+ "416" = "Ethiopia"
+ "427" = "Kenya"
+ "440" = "Nigeria"
+ "467" = "Western Africa, Not Specified"
+ "468" = "Other Africa, Not Specified"
+ "469" = "Eastern Africa, Not Specified"
+ "501" = "Australia"
+ "555" = "Other US Island Areas, Oceania, Not Specified, or At Sea"
+ ;
+
+ value $ US2021C_NATIVITY_f
+ "1" = "Native"
+ "2" = "Foreign born"
+ ;
+
+ value $ US2021C_POBP_f
+ "001" = "Alabama/AL"
+ "002" = "Alaska/AK"
+ "004" = "Arizona/AZ"
+ "005" = "Arkansas/AR"
+ "006" = "California/CA"
+ "008" = "Colorado/CO"
+ "009" = "Connecticut/CT"
+ "010" = "Delaware/DE"
+ "011" = "District of Columbia/DC"
+ "012" = "Florida/FL"
+ "013" = "Georgia/GA"
+ "015" = "Hawaii/HI"
+ "016" = "Idaho/ID"
+ "017" = "Illinois/IL"
+ "018" = "Indiana/IN"
+ "019" = "Iowa/IA"
+ "020" = "Kansas/KS"
+ "021" = "Kentucky/KY"
+ "022" = "Louisiana/LA"
+ "023" = "Maine/ME"
+ "024" = "Maryland/MD"
+ "025" = "Massachusetts/MA"
+ "026" = "Michigan/MI"
+ "027" = "Minnesota/MN"
+ "028" = "Mississippi/MS"
+ "029" = "Missouri/MO"
+ "030" = "Montana/MT"
+ "031" = "Nebraska/NE"
+ "032" = "Nevada/NV"
+ "033" = "New Hampshire/NH"
+ "034" = "New Jersey/NJ"
+ "035" = "New Mexico/NM"
+ "036" = "New York/NY"
+ "037" = "North Carolina/NC"
+ "038" = "North Dakota/ND"
+ "039" = "Ohio/OH"
+ "040" = "Oklahoma/OK"
+ "041" = "Oregon/OR"
+ "042" = "Pennsylvania/PA"
+ "044" = "Rhode Island/RI"
+ "045" = "South Carolina/SC"
+ "046" = "South Dakota/SD"
+ "047" = "Tennessee/TN"
+ "048" = "Texas/TX"
+ "049" = "Utah/UT"
+ "050" = "Vermont/VT"
+ "051" = "Virginia/VA"
+ "053" = "Washington/WA"
+ "054" = "West Virginia/WV"
+ "055" = "Wisconsin/WI"
+ "056" = "Wyoming/WY"
+ "060" = "American Samoa"
+ "066" = "Guam"
+ "069" = "Commonwealth of the Northern Mariana Islands"
+ "072" = "Puerto Rico"
+ "078" = "US Virgin Islands"
+ "100" = "Albania"
+ "102" = "Austria"
+ "103" = "Belgium"
+ "104" = "Bulgaria"
+ "105" = "Czechoslovakia"
+ "106" = "Denmark"
+ "108" = "Finland"
+ "109" = "France"
+ "110" = "Germany"
+ "116" = "Greece"
+ "117" = "Hungary"
+ "118" = "Iceland"
+ "119" = "Ireland"
+ "120" = "Italy"
+ "126" = "Netherlands"
+ "127" = "Norway"
+ "128" = "Poland"
+ "129" = "Portugal"
+ "130" = "Azores Islands"
+ "132" = "Romania"
+ "134" = "Spain"
+ "136" = "Sweden"
+ "137" = "Switzerland"
+ "138" = "United Kingdom, Not Specified"
+ "139" = "England"
+ "140" = "Scotland"
+ "142" = "Northern Ireland"
+ "147" = "Yugoslavia"
+ "148" = "Czech Republic"
+ "149" = "Slovakia"
+ "150" = "Bosnia and Herzegovina"
+ "151" = "Croatia"
+ "152" = "Macedonia"
+ "154" = "Serbia"
+ "156" = "Latvia"
+ "157" = "Lithuania"
+ "158" = "Armenia"
+ "159" = "Azerbaijan"
+ "160" = "Belarus"
+ "161" = "Georgia"
+ "162" = "Moldova"
+ "163" = "Russia"
+ "164" = "Ukraine"
+ "165" = "USSR"
+ "166" = "Europe"
+ "167" = "Kosovo"
+ "168" = "Montenegro"
+ "169" = "Other Europe, Not Specified"
+ "200" = "Afghanistan"
+ "202" = "Bangladesh"
+ "203" = "Bhutan"
+ "205" = "Myanmar"
+ "206" = "Cambodia"
+ "207" = "China"
+ "209" = "Hong Kong"
+ "210" = "India"
+ "211" = "Indonesia"
+ "212" = "Iran"
+ "213" = "Iraq"
+ "214" = "Israel"
+ "215" = "Japan"
+ "216" = "Jordan"
+ "217" = "Korea"
+ "218" = "Kazakhstan"
+ "219" = "Kyrgyzstan"
+ "222" = "Kuwait"
+ "223" = "Laos"
+ "224" = "Lebanon"
+ "226" = "Malaysia"
+ "228" = "Mongolia"
+ "229" = "Nepal"
+ "231" = "Pakistan"
+ "233" = "Philippines"
+ "235" = "Saudi Arabia"
+ "236" = "Singapore"
+ "238" = "Sri Lanka"
+ "239" = "Syria"
+ "240" = "Taiwan"
+ "242" = "Thailand"
+ "243" = "Turkey"
+ "245" = "United Arab Emirates"
+ "246" = "Uzbekistan"
+ "247" = "Vietnam"
+ "248" = "Yemen"
+ "249" = "Asia"
+ "253" = "South Central Asia, Not Specified"
+ "254" = "Other Asia, Not Specified"
+ "300" = "Bermuda"
+ "301" = "Canada"
+ "303" = "Mexico"
+ "310" = "Belize"
+ "311" = "Costa Rica"
+ "312" = "El Salvador"
+ "313" = "Guatemala"
+ "314" = "Honduras"
+ "315" = "Nicaragua"
+ "316" = "Panama"
+ "321" = "Antigua and Barbuda"
+ "323" = "Bahamas"
+ "324" = "Barbados"
+ "327" = "Cuba"
+ "328" = "Dominica"
+ "329" = "Dominican Republic"
+ "330" = "Grenada"
+ "332" = "Haiti"
+ "333" = "Jamaica"
+ "338" = "St. Kitts-Nevis"
+ "339" = "St. Lucia"
+ "340" = "St. Vincent and the Grenadines"
+ "341" = "Trinidad and Tobago"
+ "343" = "West Indies"
+ "344" = "Caribbean, Not Specified"
+ "360" = "Argentina"
+ "361" = "Bolivia"
+ "362" = "Brazil"
+ "363" = "Chile"
+ "364" = "Colombia"
+ "365" = "Ecuador"
+ "368" = "Guyana"
+ "369" = "Paraguay"
+ "370" = "Peru"
+ "372" = "Uruguay"
+ "373" = "Venezuela"
+ "374" = "South America"
+ "399" = "Americas, Not Specified"
+ "400" = "Algeria"
+ "407" = "Cameroon"
+ "408" = "Cabo Verde"
+ "412" = "Congo"
+ "414" = "Egypt"
+ "416" = "Ethiopia"
+ "417" = "Eritrea"
+ "420" = "Gambia"
+ "421" = "Ghana"
+ "423" = "Guinea"
+ "425" = "Ivory Coast"
+ "427" = "Kenya"
+ "429" = "Liberia"
+ "430" = "Libya"
+ "436" = "Morocco"
+ "440" = "Nigeria"
+ "442" = "Rwanda"
+ "444" = "Senegal"
+ "447" = "Sierra Leone"
+ "448" = "Somalia"
+ "449" = "South Africa"
+ "451" = "Sudan"
+ "453" = "Tanzania"
+ "454" = "Togo"
+ "456" = "Tunisia"
+ "457" = "Uganda"
+ "459" = "Democratic Republic of Congo (Zaire)"
+ "460" = "Zambia"
+ "461" = "Zimbabwe"
+ "462" = "Africa"
+ "463" = "South Sudan"
+ "464" = "Northern Africa, Not Specified"
+ "467" = "Western Africa, Not Specified"
+ "468" = "Other Africa, Not Specified"
+ "469" = "Eastern Africa, Not Specified"
+ "501" = "Australia"
+ "508" = "Fiji"
+ "511" = "Marshall Islands"
+ "512" = "Micronesia"
+ "515" = "New Zealand"
+ "523" = "Tonga"
+ "527" = "Samoa"
+ "554" = "Other US Island Areas, Oceania, Not Specified, or at Sea"
+ ;
+
+ value $ US2021C_RAC1P_f
+ "1" = "White alone"
+ "2" = "Black or African American alone"
+ "3" = "American Indian alone"
+ "4" = "Alaska Native alone"
+ "5" = "American Indian and Alaska Native tribes specified; or American Indian or Alaska Native, not specifi"
+ "ed and no other races"
+ "6" = "Asian alone"
+ "7" = "Native Hawaiian and Other Pacific Islander alone"
+ "8" = "Some Other Race alone"
+ "9" = "Two or More Races"
+ ;
+
+run;
+
+data IPUMS.raw_p;
+ infile dat_p pad missover lrecl=633;
+
+ input
+ YEAR 1-4
+ MULTYEAR 5-8
+ SAMPLE 9-14
+ SERIAL 15-22
+ CBSERIAL 23-35
+ HHWT 36-45 .2
+ CLUSTER 46-58
+ STATEFIP 59-60
+ PUMA 61-65
+ STRATA 66-77
+ GQ 78-78
+ US2021C_HHT $ 79-79
+ PERNUM 80-83
+ PERWT 84-93 .2
+ REPWTP 94-94
+ REPWTP1 95-100
+ REPWTP2 101-106
+ REPWTP3 107-112
+ REPWTP4 113-118
+ REPWTP5 119-124
+ REPWTP6 125-130
+ REPWTP7 131-136
+ REPWTP8 137-142
+ REPWTP9 143-148
+ REPWTP10 149-154
+ REPWTP11 155-160
+ REPWTP12 161-166
+ REPWTP13 167-172
+ REPWTP14 173-178
+ REPWTP15 179-184
+ REPWTP16 185-190
+ REPWTP17 191-196
+ REPWTP18 197-202
+ REPWTP19 203-208
+ REPWTP20 209-214
+ REPWTP21 215-220
+ REPWTP22 221-226
+ REPWTP23 227-232
+ REPWTP24 233-238
+ REPWTP25 239-244
+ REPWTP26 245-250
+ REPWTP27 251-256
+ REPWTP28 257-262
+ REPWTP29 263-268
+ REPWTP30 269-274
+ REPWTP31 275-280
+ REPWTP32 281-286
+ REPWTP33 287-292
+ REPWTP34 293-298
+ REPWTP35 299-304
+ REPWTP36 305-310
+ REPWTP37 311-316
+ REPWTP38 317-322
+ REPWTP39 323-328
+ REPWTP40 329-334
+ REPWTP41 335-340
+ REPWTP42 341-346
+ REPWTP43 347-352
+ REPWTP44 353-358
+ REPWTP45 359-364
+ REPWTP46 365-370
+ REPWTP47 371-376
+ REPWTP48 377-382
+ REPWTP49 383-388
+ REPWTP50 389-394
+ REPWTP51 395-400
+ REPWTP52 401-406
+ REPWTP53 407-412
+ REPWTP54 413-418
+ REPWTP55 419-424
+ REPWTP56 425-430
+ REPWTP57 431-436
+ REPWTP58 437-442
+ REPWTP59 443-448
+ REPWTP60 449-454
+ REPWTP61 455-460
+ REPWTP62 461-466
+ REPWTP63 467-472
+ REPWTP64 473-478
+ REPWTP65 479-484
+ REPWTP66 485-490
+ REPWTP67 491-496
+ REPWTP68 497-502
+ REPWTP69 503-508
+ REPWTP70 509-514
+ REPWTP71 515-520
+ REPWTP72 521-526
+ REPWTP73 527-532
+ REPWTP74 533-538
+ REPWTP75 539-544
+ REPWTP76 545-550
+ REPWTP77 551-556
+ REPWTP78 557-562
+ REPWTP79 563-568
+ REPWTP80 569-574
+ US2021C_ADJINCP 575-581 .6 /* NOTE: changed informat from string to 8.6 numeric */
+ US2021C_AGEP $ 582-583
+ US2021C_FER $ 584-584
+ US2021C_JWMNP $ 585-587
+ US2021C_JWRIP $ 588-589
+ US2021C_JWTRNS $ 590-591
+ US2021C_LANX $ 592-592
+ US2021C_MAR $ 593-593
+ US2021C_MIG $ 594-594
+ US2021C_MLPA $ 595-595
+ US2021C_MLPB $ 596-596
+ US2021C_MLPCD $ 597-597
+ US2021C_MLPE $ 598-598
+ US2021C_MLPFG $ 599-599
+ US2021C_MLPH $ 600-600
+ US2021C_MLPJ $ 601-601
+ US2021C_SCHL $ 602-603
+ US2021C_SEX $ 604-604
+ US2021C_HISP $ 605-606
+ US2021C_LANP $ 607-610
+ US2021C_MIGPUMA $ 611-615
+ US2021C_MIGSP $ 616-618
+ US2021C_NATIVITY $ 619-619
+ US2021C_PINCP $ 620-626
+ US2021C_POBP $ 627-629
+ US2021C_POVPIP $ 630-632
+ US2021C_RAC1P $ 633-633
+ ;
+
+ label
+ YEAR = "Census year"
+ MULTYEAR = "Actual year of survey, multi-year ACS/PRCS"
+ SAMPLE = "IPUMS sample identifier"
+ SERIAL = "Household serial number"
+ CBSERIAL = "Original Census Bureau household serial number"
+ HHWT = "Household weight"
+ CLUSTER = "Household cluster for variance estimation"
+ STATEFIP = "State (FIPS code)"
+ PUMA = "Public Use Microdata Area"
+ STRATA = "Household strata for variance estimation"
+ GQ = "Group quarters status"
+ US2021C_HHT = "Household/family type"
+ PERNUM = "Person number in sample unit"
+ PERWT = "Person weight"
+ REPWTP = "Person replicate weights [80 variables]"
+ REPWTP1 = "Person replicate weight 1"
+ REPWTP2 = "Person replicate weight 2"
+ REPWTP3 = "Person replicate weight 3"
+ REPWTP4 = "Person replicate weight 4"
+ REPWTP5 = "Person replicate weight 5"
+ REPWTP6 = "Person replicate weight 6"
+ REPWTP7 = "Person replicate weight 7"
+ REPWTP8 = "Person replicate weight 8"
+ REPWTP9 = "Person replicate weight 9"
+ REPWTP10 = "Person replicate weight 10"
+ REPWTP11 = "Person replicate weight 11"
+ REPWTP12 = "Person replicate weight 12"
+ REPWTP13 = "Person replicate weight 13"
+ REPWTP14 = "Person replicate weight 14"
+ REPWTP15 = "Person replicate weight 15"
+ REPWTP16 = "Person replicate weight 16"
+ REPWTP17 = "Person replicate weight 17"
+ REPWTP18 = "Person replicate weight 18"
+ REPWTP19 = "Person replicate weight 19"
+ REPWTP20 = "Person replicate weight 20"
+ REPWTP21 = "Person replicate weight 21"
+ REPWTP22 = "Person replicate weight 22"
+ REPWTP23 = "Person replicate weight 23"
+ REPWTP24 = "Person replicate weight 24"
+ REPWTP25 = "Person replicate weight 25"
+ REPWTP26 = "Person replicate weight 26"
+ REPWTP27 = "Person replicate weight 27"
+ REPWTP28 = "Person replicate weight 28"
+ REPWTP29 = "Person replicate weight 29"
+ REPWTP30 = "Person replicate weight 30"
+ REPWTP31 = "Person replicate weight 31"
+ REPWTP32 = "Person replicate weight 32"
+ REPWTP33 = "Person replicate weight 33"
+ REPWTP34 = "Person replicate weight 34"
+ REPWTP35 = "Person replicate weight 35"
+ REPWTP36 = "Person replicate weight 36"
+ REPWTP37 = "Person replicate weight 37"
+ REPWTP38 = "Person replicate weight 38"
+ REPWTP39 = "Person replicate weight 39"
+ REPWTP40 = "Person replicate weight 40"
+ REPWTP41 = "Person replicate weight 41"
+ REPWTP42 = "Person replicate weight 42"
+ REPWTP43 = "Person replicate weight 43"
+ REPWTP44 = "Person replicate weight 44"
+ REPWTP45 = "Person replicate weight 45"
+ REPWTP46 = "Person replicate weight 46"
+ REPWTP47 = "Person replicate weight 47"
+ REPWTP48 = "Person replicate weight 48"
+ REPWTP49 = "Person replicate weight 49"
+ REPWTP50 = "Person replicate weight 50"
+ REPWTP51 = "Person replicate weight 51"
+ REPWTP52 = "Person replicate weight 52"
+ REPWTP53 = "Person replicate weight 53"
+ REPWTP54 = "Person replicate weight 54"
+ REPWTP55 = "Person replicate weight 55"
+ REPWTP56 = "Person replicate weight 56"
+ REPWTP57 = "Person replicate weight 57"
+ REPWTP58 = "Person replicate weight 58"
+ REPWTP59 = "Person replicate weight 59"
+ REPWTP60 = "Person replicate weight 60"
+ REPWTP61 = "Person replicate weight 61"
+ REPWTP62 = "Person replicate weight 62"
+ REPWTP63 = "Person replicate weight 63"
+ REPWTP64 = "Person replicate weight 64"
+ REPWTP65 = "Person replicate weight 65"
+ REPWTP66 = "Person replicate weight 66"
+ REPWTP67 = "Person replicate weight 67"
+ REPWTP68 = "Person replicate weight 68"
+ REPWTP69 = "Person replicate weight 69"
+ REPWTP70 = "Person replicate weight 70"
+ REPWTP71 = "Person replicate weight 71"
+ REPWTP72 = "Person replicate weight 72"
+ REPWTP73 = "Person replicate weight 73"
+ REPWTP74 = "Person replicate weight 74"
+ REPWTP75 = "Person replicate weight 75"
+ REPWTP76 = "Person replicate weight 76"
+ REPWTP77 = "Person replicate weight 77"
+ REPWTP78 = "Person replicate weight 78"
+ REPWTP79 = "Person replicate weight 79"
+ REPWTP80 = "Person replicate weight 80"
+ US2021C_ADJINCP = "Adjustment factor for income and earnings dollar amounts (6 implied decimal places)"
+ US2021C_AGEP = "Age"
+ US2021C_FER = "Gave birth to child within the past 12 months"
+ US2021C_JWMNP = "Travel time to work"
+ US2021C_JWRIP = "Vehicle occupancy"
+ US2021C_JWTRNS = "Means of transportation to work"
+ US2021C_LANX = "Language other than English spoken at home"
+ US2021C_MAR = "Marital status"
+ US2021C_MIG = "Mobility status (lived here 1 year ago)"
+ US2021C_MLPA = "Served September 2001 or later"
+ US2021C_MLPB = "Served August 1990 - August 2001 (including Persian Gulf War)"
+ US2021C_MLPCD = "Served May 1975 - July 1990"
+ US2021C_MLPE = "Served Vietnam era (August 1964 - April 1975)"
+ US2021C_MLPFG = "Served February 1955 - July 1964"
+ US2021C_MLPH = "Served Korean War (July 1950 - January 1955)"
+ US2021C_MLPJ = "Served World War II (December 1941 - December 1946)"
+ US2021C_SCHL = "Educational attainment"
+ US2021C_SEX = "Sex"
+ US2021C_HISP = "Recoded detailed Hispanic origin"
+ US2021C_LANP = "Language spoken at home"
+ US2021C_MIGPUMA = "Migration PUMA based on 2010 Census definition"
+ US2021C_MIGSP = "Migration recode - State or foreign country code"
+ US2021C_NATIVITY = "Nativity"
+ US2021C_PINCP = "Total person's income (signed, use ADJINC to adjust to constant dollars)"
+ US2021C_POBP = "Place of birth (Recode)"
+ US2021C_POVPIP = "Income-to-poverty ratio recode"
+ US2021C_RAC1P = "Recoded detailed race code"
+ ;
+
+ format
+ STATEFIP STATEFIP_f.
+ GQ GQ_f.
+ US2021C_HHT US2021C_HHT_f.
+ REPWTP REPWTP_f.
+ US2021C_FER US2021C_FER_f.
+ US2021C_JWTRNS US2021C_JWTRNS_f.
+ US2021C_LANX US2021C_LANX_f.
+ US2021C_MAR US2021C_MAR_f.
+ US2021C_MIG US2021C_MIG_f.
+ US2021C_MLPA US2021C_MLPA_f.
+ US2021C_MLPB US2021C_MLPB_f.
+ US2021C_MLPCD US2021C_MLPCD_f.
+ US2021C_MLPE US2021C_MLPE_f.
+ US2021C_MLPFG US2021C_MLPFG_f.
+ US2021C_MLPH US2021C_MLPH_f.
+ US2021C_MLPJ US2021C_MLPJ_f.
+ US2021C_SCHL US2021C_SCHL_f.
+ US2021C_SEX US2021C_SEX_f.
+ US2021C_HISP US2021C_HISP_f.
+ US2021C_LANP US2021C_LANP_f.
+ US2021C_MIGSP US2021C_MIGSP_f.
+ US2021C_NATIVITY US2021C_NATIVITY_f.
+ US2021C_POBP US2021C_POBP_f.
+ US2021C_RAC1P US2021C_RAC1P_f.
+ ;
+
+ format
+ CBSERIAL 13.
+ HHWT 11.2
+ CLUSTER 13.
+ STRATA 12.
+ PERWT 11.2
+ ;
+
+run;
A => src/02_Prepare.sas +842 -0
@@ 1,842 @@
+libname IPUMS "/home/u44593168";
+
+data IPUMS.houses;
+ set IPUMS.raw_h;
+
+ /*
+ VACANT
+ 1: Occuped
+ 2: Vacant
+
+ Recoded from VACS
+ 1 (For rent) -> 2
+ 2 (Rented, not occupied) -> 2
+ 3 (For sale only) -> 2
+ 4 (Sold, not occupied) -> 2
+ 5 (For seasonal/recreational/occasional use) -> 2
+ 6 (For migrant workers) -> 2
+ 7 (Other vacant) -> 2
+ Also recoded from TEN
+ 1 (Owned with mortgage or loan (include home equity loans)) -> 1
+ 2 (Owned free and clear) -> 1
+ 3 (Rented) -> 1
+ 4 (Occupied without payment of rent) -> 1
+ */
+ if US2021C_VACS in ("1" "2" "3" "4" "5" "6" "7") then VACANT=2;
+ else if US2021C_TEN in ("1" "2" "3" "4") then VACANT=1;
+
+ /*
+ NP_NUM
+ Numeric NP if occupied
+ */
+ if US2021C_NP in ("B0" "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9") then NP_NUM=.;
+ else if VACANT in (. 2) then NP_NUM=.;
+ else NP_NUM=input(US2021C_NP, 2.);
+
+ /*
+ OWN
+ Ownership of an occupied housing unit
+ 1: Owned
+ 2: Rented
+
+ Recoded from TEN
+ 1 (Owned with mortgage or loan (include home equity loans)) -> 1
+ 2 (Owned free and clear) -> 1
+ 3 (Rented) -> 2
+ 4 (Occupied without payment of rent) -> 2
+ */
+ if US2021C_TEN in ("B") then OWN=.;
+ else if US2021C_TEN in ("1" "2") then OWN=1;
+ else if US2021C_TEN in ("3" "4") then OWN=2;
+
+ /*
+ BLD_CAT
+ housing units category
+ 1: Single unit
+ 2: Multi-unit
+ 3: Mobile home
+ 4: Boat, RV, van, etc.
+
+ Recoded from BLD
+ 1 (Mobile home or trailer) -> 3
+ 2 (One-family house detached) -> 1
+ 3 (One-family house attached) -> 1
+ 4 (2 Apartments) -> 2
+ 5 (3-4 Apartments) -> 2
+ 6 (5-9 Apartments) -> 2
+ 7 (10-19 Apartments) -> 2
+ 8 (20-49 Apartments) -> 2
+ 9 (50 or more apartments) -> 2
+ 10 (Boat, RV, van, etc.) -> 4
+ */
+ if US2021C_BLD="BB" then BLD_CAT=.;
+ else if US2021C_BLD="01" then BLD_CAT=3;
+ else if US2021C_BLD in ("02" "03") then BLD_CAT=1;
+ else if US2021C_BLD in ("04" "05" "06" "07" "08" "09") then BLD_CAT=2;
+ else if US2021C_BLD="10" then BLD_CAT=4;
+
+ /*
+ year moved in category
+ 1: Before 1990
+ 2: 1990s
+ 3: 2000s
+ 4: 2010-2014
+ 5: 2015-2016
+ 6: Since 2017
+ */
+
+ /*
+ VALP_NUM
+ Numeric VALP
+ */
+ if US2021C_VALP="BBBBBBB" then VALP_NUM=.;
+ else VALP_NUM=input(US2021C_VALP, 7.);
+
+ /*
+ VAL
+ Property value adjusted for current year
+ */
+ if VALP_NUM=. then VAL=.;
+ else if US2021C_ADJHSG in (. 0) then VAL=.;
+ else VAL=VALP_NUM*US2021C_ADJHSG;
+
+ /*
+ VAL_OWN
+ Property value of a housing unit if owner occupied, less than 10 acres, and not a mobile home
+ */
+ if VAL=. then VAL_OWN=.;
+ else if OWN in (. 0) then VAL_OWN=.;
+ else if US2021C_SVAL in ("B" "0") then VAL_OWN=.;
+ else VAL_OWN=VAL;
+
+ /*
+ VAL_OWN_CAT
+ Categories of property value if owner occupied, less than 10 acres, and not a mobile home
+ 1: Up to $100k
+ 2: $100k-$200k
+ 3: $200k-$300k
+ 4: $300k-$400k
+ 5: $400k-$500k
+ 6: $500k-$1m
+ 7: $1m+
+ */
+ if VAL=. then VAL_OWN=.;
+ else if OWN in (. 2) then VAL_OWN_CAT=.;
+ else if US2021C_SVAL in ("B" "0") then VAL_OWN=.;
+ else if VAL_OWN<=99999 then VAL_OWN_CAT=1;
+ else if 100000<=VAL_OWN<=199999 then VAL_OWN_CAT=2;
+ else if 200000<=VAL_OWN<=299999 then VAL_OWN_CAT=3;
+ else if 300000<=VAL_OWN<=399999 then VAL_OWN_CAT=4;
+ else if 400000<=VAL_OWN<=499999 then VAL_OWN_CAT=5;
+ else if 500000<=VAL_OWN<=999999 then VAL_OWN_CAT=6;
+ else if 1000000<=VAL_OWN then VAL_OWN_CAT=7;
+run;
+
+data IPUMS.people;
+ set IPUMS.raw_p;
+ /*
+ AGEP_NUM
+ Numeric AGEP
+
+ Recoded from AGEP
+ B0-B9 -> .
+ */
+ if US2021C_AGEP in ("B0" "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9") then AGEP_NUM=.;
+ else AGEP_NUM = input(US2021C_AGEP, 2.);
+
+ /*
+ AGEP_CAT
+ Categories of AGEP
+ 1: Under 10
+ 2: 10-19
+ 3: 20-29
+ 4: 30-39
+ 5: 40-49
+ 6: 50-59
+ 7: 60-69
+ 8: 70-79
+ 9: 80 and over
+ */
+ if AGEP_NUM=. then AGEP_CAT=.;
+ else if AGEP_NUM<=9 then AGEP_CAT=1;
+ else if 10<=AGEP_NUM<=19 then AGEP_CAT=2;
+ else if 20<=AGEP_NUM<=29 then AGEP_CAT=3;
+ else if 30<=AGEP_NUM<=39 then AGEP_CAT=4;
+ else if 40<=AGEP_NUM<=49 then AGEP_CAT=5;
+ else if 50<=AGEP_NUM<=59 then AGEP_CAT=6;
+ else if 60<=AGEP_NUM<=69 then AGEP_CAT=7;
+ else if 70<=AGEP_NUM<=79 then AGEP_CAT=8;
+ else if 80<=AGEP_NUM then AGEP_CAT=9;
+
+ /*
+ AGEP_CAT2
+ Categories of AGEP
+ 1: Under 18
+ 2: 18-64
+ 3: 65 and over
+ */
+ if AGEP_NUM=. then AGEP_CAT2=.;
+ else if AGEP_NUM<=17 then AGEP_CAT2=1;
+ else if 18<=AGEP_NUM<=64 then AGEP_CAT2=2;
+ else if 65<=AGEP_NUM then AGEP_CAT2=3;
+
+ /*
+ AGEP_CAT3
+ Categories of AGEP
+ 1: Under 18
+ 2: 18 and over
+ */
+ if AGEP_NUM=. then AGEP_CAT3=.;
+ else if AGEP_NUM<=17 then AGEP_CAT3=1;
+ else if 18<=AGEP_NUM then AGEP_CAT3=2;
+
+ /*
+ SEX
+ Categories of sex
+ 1: Male
+ 2: Female
+ */
+ if US2021C_SEX="B" then SEX=.;
+ else if US2021C_SEX="1" then SEX=1;
+ else if US2021C_SEX="2" then SEX=2;
+
+ /*
+ RACE_ETH - combined race and ethnicity
+ 1: White
+ 2: Black
+ 3: American Indian/Alaska Native
+ 4: Asian
+ 5: Native Hawaiian/Pacific Islander
+ 6: Other
+ 7: Multiple
+ 8: Hispanic
+
+ Recoded from RAC1P
+ 1 (White alone) -> 1
+ 2 (Black or African American alone) -> 2
+ 3 (American Indian alone) -> 3
+ 4 (Alaska Native alone) -> 3
+ 5 (American Indian and/or Alaska Native tribes alone) -> 3
+ 6 (Asian alone) -> 4
+ 7 (Native Hawaiian and Other Pacific Islander alone) -> 5
+ 8 (Some Other Race alone) -> 6
+ 9 (Two or More Races) -> 7
+ . -> .
+ Also recoded from HISP
+ 1 (Not Spanish/Hispanic/Latino) -> keep RAC1P recode
+ 2-24 (any of 23 different Hispanic categories) -> 8
+ */
+ if US2021C_RAC1P="B" then RACE_ETH=.;
+ else if US2021C_RAC1P="1" then RACE_ETH=1;
+ else if US2021C_RAC1P="2" then RACE_ETH=2;
+ else if US2021C_RAC1P in ("3" "4" "5") then RACE_ETH=3;
+ else if US2021C_RAC1P="6" then RACE_ETH=4;
+ else if US2021C_RAC1P="7" then RACE_ETH=5;
+ else if US2021C_RAC1P="8" then RACE_ETH=6;
+ else if US2021C_RAC1P="9" then RACE_ETH=7;
+ if US2021C_HISP in ("02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24") then RACE_ETH=8;
+
+ /*
+ PINCP_NUM
+ Numeric PINCP
+ */
+ if US2021C_PINCP="BBBBBBB" then PINCP_NUM=.;
+ else PINCP_NUM=input(US2021C_PINCP, 7.);
+
+ /*
+ INC
+ Personal income adjusted for current year
+ */
+ if PINCP_NUM=. then INC=.;
+ else if US2021C_ADJINCP in (. 0) then INC=.;
+ else INC=PINCP_NUM*US2021C_ADJINCP;
+
+ /*
+ POV
+ Poverty status
+ 1: Poverty
+ 2: Non-poverty
+ */
+ if US2021C_POVPIP="BBB" then POV=.;
+ else if US2021C_POVPIP<100 then POV=1;
+ else POV=2;
+
+ /*
+ COMM
+ Commute minutes if 16 or older
+ */
+ if US2021C_JWMNP="BBB" then COMM=.;
+ else if AGEP_NUM<16 then COMM=.;
+ else COMM=input(US2021C_JWMNP, 3.);
+
+ /*
+ COMM_CAT
+ Commute categories if 16 or older
+ 1: Drove alone
+ 2: Carpooled
+ 3: Public transit
+ 4: Bicycle
+ 5: Walked
+ 6: Other
+ 7: Worked at home
+
+ Recoded from JWTRNS
+ 1 (Car, truck, or van) -> 1
+ 2 (Bus) -> 3
+ 3 (Subway or elevated rail) -> 3
+ 4 (Long-distance train or commuter rail) -> 3
+ 5 (Light rail, streetcar, or trolley) -> 3
+ 6 (Ferryboat) -> 3
+ 7 (Taxicab) -> 6
+ 8 (Motorcycle) -> 6
+ 9 (Bicycle) -> 4
+ 10 (Walked) -> 5
+ 11 (Worked from home) -> 7
+ 12 (Other method) -> 6
+ Also recoded from JWRIP
+ 1 (Drove alone) -> 1
+ 2-10 (In 2+ person carpool) -> 2
+ */
+ if US2021C_JWTRNS="BB" then COMM_CAT=.;
+ else if US2021C_JWTRNS="01" then COMM_CAT=1;
+ else if US2021C_JWTRNS in ("02" "03" "04" "05" "06") then COMM_CAT=3;
+ else if US2021C_JWTRNS="07" then COMM_CAT=6;
+ else if US2021C_JWTRNS="08" then COMM_CAT=6;
+ else if US2021C_JWTRNS="09" then COMM_CAT=4;
+ else if US2021C_JWTRNS="10" then COMM_CAT=5;
+ else if US2021C_JWTRNS="11" then COMM_CAT=7;
+ else if US2021C_JWTRNS="12" then COMM_CAT=6;
+ if US2021C_JWTRNS="01" and US2021C_JWRIP="01" then COMM_CAT=1;
+ else if US2021C_JWTRNS="01" and US2021C_JWRIP in ("02" "03" "04" "05" "06" "07" "08" "09" "10") then COMM_CAT=2;
+ if AGEP_NUM<16 then COMM_CAT=.;
+
+ /*
+ HHT_CAT
+ House type category
+ 1: Married couples
+ 2: Male householder
+ 3: Female householder
+ 4: Non-family
+
+ Recoded from HHT
+ 1 (Married couple household) -> 1
+ 2 (Other family household: Male householder, no spouse present) -> 2
+ 3 (Other family household: Female householder, no spouse present) -> 3
+ 4 (Nonfamily household: Male householder: Living alone) -> 4
+ 5 (Nonfamily household: Male householder: Not living alone) -> 4
+ 6 (Nonfamily household: Female householder: Living alone) -> 4
+ 7 (Nonfamily household: Female householder: Not living alone) -> 4
+ */
+ if US2021C_HHT="B" then HHT_CAT=.;
+ else if US2021C_HHT="1" then HHT_CAT=1;
+ else if US2021C_HHT="2" then HHT_CAT=2;
+ else if US2021C_HHT="3" then HHT_CAT=3;
+ else if US2021C_HHT in ("4" "5" "6" "7") then HHT_CAT=4;
+
+ /*
+ MARRIED
+ Marital status if 15 or older
+ 1: Married
+ 2: Not married
+
+ Recoded from MAR
+ 1 (Married) -> 1
+ 2 (Widowed) -> 2
+ 3 (Divorced) -> 2
+ 4 (Separated) -> 2
+ 5 (Never married or under 15 years old) -> 2
+ */
+ if US2021C_MAR="B" then MARRIED=.;
+ else if AGEP_NUM=. or AGEP_NUM<15 then MARRIED=.;
+ else if US2021C_MAR="1" then MARRIED=1;
+ else if US2021C_MAR in ("2" "3" "4" "5") then MARRIED=2;
+
+ /*
+ MAR_CAT
+ Categories of marital status if 15 or older
+ 1: Never married
+ 2: Married
+ 3: Divorced or separated
+ 4: Widowed
+
+ Recoded from MAR
+ 1 (Married) -> 2
+ 2 (Widowed) -> 4
+ 3 (Divorced) -> 3
+ 4 (Separated) -> 3
+ 5 (Never married or under 15 years old) -> 1
+ */
+ if US2021C_MAR="B" then MAR_CAT=.;
+ else if AGEP_NUM=. or AGEP_NUM<15 then MARRIED=.;
+ else if US2021C_MAR="5" then MAR_CAT=1;
+ else if US2021C_MAR="1" then MAR_CAT=2;
+ else if US2021C_MAR in ("3" "4") then MAR_CAT=3;
+ else if US2021C_MAR="2" then MAR_CAT=4;
+
+ /*
+ BIRTH
+ Gave birth in last year if woman and 15-50
+ 1: Gave birth in last year
+ 2: Did not give birth in last year
+
+ Recoded from FER
+ 1 (Yes) -> 1
+ 2 (No) -> 2
+ */
+ if US2021C_FER="B" then BIRTH=.;
+ else if US2021C_FER="1" then BIRTH=1;
+ else if US2021C_FER="2" then BIRTH=2;
+
+ /*
+ AGEP_CAT_BIRTH
+ Age categories if woman and 15-50
+ 1: 15-19
+ 2: 20-24
+ 3: 25-29
+ 4: 30-35
+ 5: 35-39
+ 6: 40-44
+ 7: 45-50
+ */
+ if SEX in (. 1) then AGEP_CAT_BIRTH=.;
+ else if AGEP_NUM=. then AGEP_CAT_BIRTH=.;
+ else if 15<=AGEP_NUM<=19 then AGEP_CAT_BIRTH=1;
+ else if 20<=AGEP_NUM<=24 then AGEP_CAT_BIRTH=2;
+ else if 25<=AGEP_NUM<=29 then AGEP_CAT_BIRTH=3;
+ else if 30<=AGEP_NUM<=34 then AGEP_CAT_BIRTH=4;
+ else if 35<=AGEP_NUM<=39 then AGEP_CAT_BIRTH=5;
+ else if 40<=AGEP_NUM<=44 then AGEP_CAT_BIRTH=6;
+ else if 45<=AGEP_NUM<=50 then AGEP_CAT_BIRTH=7;
+
+ /*
+ MIG_CAT
+ moved in last year
+ 1: Moved in last year
+ 2: Did not move in last year
+
+ Recoded from MIG
+ 1 (Yes, same house (nonmovers)) -> 2
+ 2 (No, outside US and Puerto Rico) -> 1
+ 3 (No, different house in US or Puerto Rico) -> 1
+ */
+ if US2021C_MIG="B" then MIG_CAT=.;
+ else if US2021C_MIG="1" then MIG_CAT=2;
+ else if US2021C_MIG in ("2" "3") then MIG_CAT=1;
+
+ /*
+ MIGSP_NUM
+ Numeric MIGSP
+ */
+ if US2021C_MIGSP="BBB" then MIGSP_NUM=.;
+ else MIGSP_NUM=input(US2021C_MIGSP, 3.);
+
+ /*
+ MIGPUMA_NUM
+ Numeric MIGPUMA
+ */
+ if US2021C_MIGPUMA="BBBBB" then MIGPUMA_NUM=.;
+ else MIGPUMA_NUM=input(US2021C_MIGPUMA, 5.);
+
+ /*
+ MIG_CAT2
+ lived last year categories
+ 1: Same house year ago
+ 2: From same county
+ 3: From different county
+ 4: From different state
+ 5: From abroad
+
+ Recoded from MIG
+ 1 (Yes, same house (nonmovers)) -> 1
+ 2 (No, outside US and Puerto Rico) -> 5
+ 3 (No, different house in US or Puerto Rico) ...
+ - If MIGSP~=17 (Illinois) -> 4
+ - If MIGSP=17 but MIGPUMA~=03400 (Cook county) -> 3
+ - If MIGSP=17 and MIGPUMA=03400 -> 2
+ */
+ if US2021C_MIG="B" then MIG_CAT2=.;
+ else if US2021C_MIG="1" then MIG_CAT2=1;
+ else if US2021C_MIG="3" and MIGSP_NUM=17 and MIGPUMA_NUM=3400 then MIG_CAT2=2;
+ else if US2021C_MIG="3" and MIGSP_NUM=17 then MIG_CAT2=3;
+ else if US2021C_MIG="3" then MIG_CAT2=4;
+ else if US2021C_MIG="2" then MIG_CAT2=5;
+
+ /*
+ HS
+ 1: High school graduate
+ 2: Not a high school graduate
+
+ Recoded from SCHL
+ 1-15 (up to 12th grade no diploma) -> 2
+ 16-24 (Regular high school diploma or more) -> 1
+ */
+ if US2021C_SCHL="BB" then HS=.;
+ else if AGEP_NUM<25 then SCHL_CAT=.;
+ else if US2021C_SCHL in ("01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15") then HS=2;
+ else if US2021C_SCHL in ("16" "17" "18" "19" "20" "21" "22" "23" "24") then HS=1;
+
+ /*
+ COLLEGE
+ 1: Bachelor's degree
+ 2: No bachelor's degree
+
+ Recoded from SCHL
+ 1-20 (up to Associate's degree) -> 2
+ 21-24 (Bachelor's degree or more) -> 1
+ */
+ if US2021C_SCHL="BB" then COLLEGE=.;
+ else if AGEP_NUM<25 then SCHL_CAT=.;
+ else if US2021C_SCHL in ("01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20") then COLLEGE=2;
+ else if US2021C_SCHL in ("21" "22" "23" "24") then COLLEGE=1;
+
+ /*
+ SCHL_CAT
+ Education categories if 25 or older
+ 1: No degree
+ 2: High school
+ 3: Some college
+ 4: Bachelor's
+ 5: Post-grad
+
+ Recoded from SCHL
+ 1-15 (up to 12th grade no diploma) -> 1
+ 16 (Regular high school diploma) -> 2
+ 17 (GED or alternative credential) -> 2
+ 18 (Some college, but less than 1 year) -> 3
+ 19 (1 or more years of college credit, no degree) -> 3
+ 20 (Associate's degree) -> 3
+ 21 (Bachelor's degree) -> 4
+ 22 (Master's degree) -> 5
+ 23 (Professional degree beyond a bachelor's degree) -> 5
+ 24 (Doctorate degree) -> 5
+ */
+ if US2021C_SCHL="BB" then SCHL_CAT=.;
+ else if AGEP_NUM<25 then SCHL_CAT=.;
+ else if US2021C_SCHL in ("01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15") then SCHL_CAT=1;
+ else if US2021C_SCHL in ("16" "17") then SCHL_CAT=2;
+ else if US2021C_SCHL in ("18" "19" "20") then SCHL_CAT=3;
+ else if US2021C_SCHL in ("21") then SCHL_CAT=4;
+ else if US2021C_SCHL in ("22" "23" "24") then SCHL_CAT=5;
+
+ /*
+ LAN_CAT
+ Language spoken in home categories
+ 1: Language other than English spoken at home
+ 2: English only
+
+ Recoded from LANX
+ 1 (Yes, speaks another language) -> 1
+ 2 (No, speaks only English) -> 2
+ */
+ if US2021C_LANX="B" then LAN_CAT=.;
+ else if US2021C_LANX="1" then LAN_CAT=1;
+ else if US2021C_LANX="2" then LAN_CAT=2;
+
+ /*
+ LANP_NUM
+ Numeric LANP
+ */
+ if US2021C_LANP="BBBB" then LANP_NUM=.;
+ else LANP_NUM=input(US2021C_LANP,4.);
+
+ /*
+ LAN_CAT2
+ Language spoken in home categories
+ 1: English only
+ 2: Spanish
+ 3: Indo-European
+ 4: Asian/Islander
+ 5: Other
+
+ Recoded from LANX
+ 2 (No, speaks only English) -> 1
+ Also recoded from LANP
+ 1200-1205 -> 2
+ 1053-1056, 1069-1073, 1110-1564, 1711-1799 -> 3
+ 1643-1710, 1800-3798 -> 4
+ 1000-1052, 1057-1063, 1074-1109, 1565-1642, 3799-9499, 9600-9999 -> 5
+ */
+ if US2021C_LANX="B" then LAN_CAT2=.;
+ else if US2021C_LANX="2" then LAN_CAT2=1;
+ else if 1200<=US2021C_LANP<=1205 then LAN_CAT2=2;
+ else if 1053<=US2021C_LANP<=1056 or 1069<=US2021C_LANP<=1073 or 1110<=US2021C_LANP<=1564 or 1711<=US2021C_LANP<=1799 then LAN_CAT2=3;
+ else if 1643<=US2021C_LANP<=1710 or 1800<=US2021C_LANP<=3798 then LAN_CAT2=4;
+ else if 1000<=US2021C_LANP<=1052 or 1057<=US2021C_LANP<=1063 or 1074<=US2021C_LANP<=1109 or 1565<=US2021C_LANP<=1642 or 3799<=US2021C_LANP<=9499 or 9600<=US2021C_LANP<=9999 then LAN_CAT2=5;
+
+ /*
+ FOREIGN
+ Foreign-born status
+ 1: Foreign-born
+ 2: Not foreign-born
+
+ Recoded from NATIVITY
+ 1 (Native) -> 2
+ 2 (Foreign born) -> 1
+ */
+ if US2021C_NATIVITY="B" then FOREIGN=.;
+ else if US2021C_NATIVITY="1" then FOREIGN=2;
+ else if US2021C_NATIVITY="2" then FOREIGN=1;
+
+ /*
+ POBP_NUM
+ Numeric POBP if foreign-born
+ */
+ if US2021C_POBP="BBB" then POBP_NUM=.;
+ else if US2021C_NATIVITY="1" then POBP_NUM=.;
+ else POBP_NUM=input(US2021C_POBP, 3.);
+
+ /*
+ POBP_CAT
+ Place of birth categories if foreign-born
+ 1: Europe
+ 2: Asia
+ 3: Africa
+ 4: Oceania
+ 5: Latin America
+ 6: North America
+ */
+ if POBP_NUM=. then POBP_CAT=.;
+ else if 100<=POBP_NUM<=169 then POBP_CAT=1;
+ else if 200<=POBP_NUM<=254 then POBP_CAT=2;
+ else if POBP_NUM=300 or 302<=POBP_NUM<=399 then POBP_CAT=5;
+ else if POBP_NUM=301 then POBP_CAT=6;
+ else if 400<=POBP_NUM<=469 then POBP_CAT=3;
+ else if 501<=POBP_NUM<=554 then POBP_CAT=4;
+
+ /*
+ MLPJ2
+ WW2 Veteran status
+ 1: Veteran
+ */
+ if US2021C_MLPJ in ("B" "0") then MLPJ2=.;
+ else if US2021C_MLPJ="1" then MLPJ2=1;
+
+ /*
+ MLPH2
+ Korea Veteran status
+ 1: Veteran
+ */
+ if US2021C_MLPH in ("B" "0") then MLPH2=.;
+ else if US2021C_MLPH="1" then MLPH2=1;
+
+ /*
+ MLPFG2
+ February 1955 - July 1964 Veteran status
+ 1: Veteran
+ */
+ if US2021C_MLPFG in ("B" "0") then MLPFG2=.;
+ else if US2021C_MLPFG="1" then MLPFG2=1;
+
+ /*
+ MLPE2
+ Vietnam Veteran status
+ 1: Veteran
+ */
+ if US2021C_MLPE in ("B" "0") then MLPE2=.;
+ else if US2021C_MLPE="1" then MLPE2=1;
+
+ /*
+ MLPCD2
+ May 1975 - July 1990 Veteran status
+ 1: Veteran
+ */
+ if US2021C_MLPCD in ("B" "0") then MLPCD2=.;
+ else if US2021C_MLPCD="1" then MLPCD2=1;
+
+ /*
+ MLPB2
+ Gulf (1990s) Veteran status
+ 1: Veteran
+ */
+ if US2021C_MLPB in ("B" "0") then MLPB2=.;
+ else if US2021C_MLPB="1" then MLPB2=1;
+
+ /*
+ MLPA2
+ Gulf (2001-) Veteran status
+ 1: Veteran
+ */
+ if US2021C_MLPA in ("B" "0") then MLPA2=.;
+ else if US2021C_MLPA="1" then MLPA2=1;
+
+ /*
+ VET
+ Veteran status
+ 1: Veteran
+ 2: Not veteran
+ */
+ if MLPJ2=1 or MLPH2=1 or MLPFG2=1 or MLPE2=1 or MLPCD2=1 or MLPB2=1 or MLPA2=1 then VET=1;
+ else VET=2;
+run;
+
+proc summary data=IPUMS.people;
+ class SERIAL;
+ var INC;
+ output out=IPUMS.sumpeople sum=HHINC;
+run;
+
+data IPUMS.mergehouses;
+ /*
+ HHINC
+ Household income
+
+ Merged from an aggregation of the person-level data table
+ */
+ merge
+ IPUMS.houses (keep=SERIAL HHWT STRATA REPWT1-REPWT80 in=HOUSE)
+ IPUMS.sumpeople (keep=SERIAL HHINC);
+ by SERIAL;
+ if HOUSE;
+ if HHINC=0 then HHINC=.;
+
+ /*
+ HHINC_CAT
+ Household income categories
+ 1: Under $50K
+ 2: $50K - $100K
+ 3: $100K - $200K
+ 4: Over $200K
+ */
+ if HHINC=. then HHINC_CAT=.;
+ else if HHINC<50000 then HHINC_CAT=1;
+ else if 50000<=HHINC<100000 then HHINC_CAT=2;
+ else if 100000<=HHINC<200000 then HHINC_CAT=3;
+ else if 200000<=HHINC then HHINC_CAT=4;
+run;
+
+proc datasets library=IPUMS nolist;
+ delete sumpeople;
+run;
+
+proc format;
+ value SEX_f 1="Male"
+ 2="Female";
+
+ value AGEP_CAT_f 1="0-9"
+ 2="10-19"
+ 3="20-29"
+ 4="30-39"
+ 5="40-49"
+ 6="50-59"
+ 7="60-69"
+ 8="70-79"
+ 9="80+";
+
+ value AGEP_CAT2_f 1="Under 18"
+ 2="18 to 64"
+ 3="65 and over";
+
+ value AGEP_CAT3_f 1="Under 18"
+ 2="18 and over";
+
+ value RACE_ETH_f 1="White"
+ 2="Black"
+ 3="Native"
+ 4="Asian"
+ 5="Islander"
+ 6="Other"
+ 7="Two+"
+ 8="Hispanic";
+
+ value HHT_CAT_f 1="Married couples"
+ 2="Male householder"
+ 3="Female householder"
+ 4="Non-family";
+
+ value MARRIED_f 1="Married"
+ 2="Single";
+
+ value MAR_CAT_f 1="Never married"
+ 2="Now married"
+ 3="Divorced"
+ 4="Widowed";
+
+ value BIRTH_f 1="Gave birth in last year"
+ 2="Did not give birth in last year";
+
+ value AGEP_CAT_BIRTH_f 1="15-19"
+ 2="20-24"
+ 3="25-29"
+ 4="30-34"
+ 5="35-39"
+ 6="40-44"
+ 7="45-50";
+
+ value VACANT_f 1="Occuped"
+ 2="Vacant";
+
+ value OWN_f 1="Owner occupied"
+ 2="Renter occupied";
+
+ value VAL_OWN_CAT_f 1="Under $100K"
+ 2="$100K-$200K"
+ 3="$200K-$300K"
+ 4="$300K-$400K"
+ 5="$400K-$500K"
+ 6="$500K-$1M"
+ 7="Over $1M";
+
+ value HS_f 1="High school grad or higher"
+ 2="Not a high school grad";
+
+ value COLLEGE_f 1="Bachelor's degree or higher"
+ 2="No Bachelor's degree";
+
+ value SCHL_CAT_f 1="No degree"
+ 2="High school"
+ 3="Some college"
+ 4="Bachelor's"
+ 5="Post-grad";
+
+ value LAN_CAT_f 1="Language other than English spoken at home"
+ 2="English only";
+
+ value LAN_CAT2_f 1="English only"
+ 2="Spanish"
+ 3="Indo-European"
+ 4="Asian/Islander"
+ 5="Other";
+
+ value FB_f 1="Foreign-born"
+ 2="Not foreign-born";
+
+ value POBP_CAT_f 1="Europe"
+ 2="Asia"
+ 3="Africa"
+ 4="Oceania"
+ 5="Latin America"
+ 6="North America";
+
+ value VET_f 1="Veteran"
+ 2="Not a veteran";
+
+ value HHINC_CAT_f 1="Under $50K"
+ 2="$50K - $100K"
+ 3="$100K - $200K"
+ 4="Over $200K";
+
+ value POV_f 1="Below poverty line"
+ 2="Above poverty line";
+
+ value COMM_CAT_f 1="Drove alone"
+ 2="Carpooled"
+ 3="Public transit"
+ 4="Bicycle"
+ 5="Walked"
+ 6="Other"
+ 7="Worked at home";
+
+ value BLD_CAT_f 1="Single unit"
+ 2="Multi-unit"
+ 3="Mobile home"
+ 4="Boat, RV, van, etc.";
+
+ value MIG_CAT_f 1="Moved in last year"
+ 2="Did not move in last year";
+
+ value MIG_CAT2_f 1="Same house year ago"
+ 2="From same county"
+ 3="From different county"
+ 4="From different state"
+ 5="From abroad";
+run;
A => src/03_Demographics.sas +42 -0
@@ 1,42 @@
+libname IPUMS "/home/u44593168";
+
+/* Population */
+proc means data=IPUMS.people sum;
+ var PERWT;
+run;
+
+/* Median Age */
+proc means data=IPUMS.people median maxdec=1;
+ var AGEP_NUM;
+ weight PERWT;
+run;
+
+/* Population by age range */
+ods select freqplot;
+proc freq data=IPUMS.people;
+ format AGEP_CAT AGEP_CAT_f.;
+ tables AGEP_CAT / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
+
+/* Population by age category */
+proc gchart data=IPUMS.people;
+ format AGEP_CAT2 AGEP_CAT2_f.;
+ donut AGEP_CAT2 / discrete clockwise slice=outside value=none percent=outside freq=PERWT;
+run;
+quit;
+
+/* Sex */
+proc gchart data=IPUMS.people;
+ format SEX SEX_f.;
+ donut SEX / discrete clockwise slice=outside value=none percent=outside freq=PERWT;
+run;
+quit;
+
+/* Race & Ethnicity */
+ods select freqplot;
+proc freq data=IPUMS.people;
+ format RACE_ETH RACE_ETH_f.;
+ tables RACE_ETH / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
A => src/04_Economics.sas +73 -0
@@ 1,73 @@
+libname IPUMS "/home/u44593168";
+
+/* Per capita income */
+proc means data=IPUMS.people sum noprint;
+ var INC;
+ weight PERWT;
+ output out=IPUMS.sumproduct sum=GDP;
+run;
+proc means data=IPUMS.people sum noprint;
+ var PERWT;
+ output out=IPUMS.sumpopulation sum=POP;
+run;
+data IPUMS.productpercapita;
+ merge
+ IPUMS.sumproduct (keep=GDP)
+ IPUMS.sumpopulation (keep=POP);
+ INCOME_PER_CAPITA=GDP/POP;
+run;
+proc print data=IPUMS.productpercapita;
+ var INCOME_PER_CAPITA;
+run;
+proc datasets library=IPUMS nolist;
+ delete sumproduct sumpopulation productpercapita;
+run;
+
+/* Median household income */
+proc means data=IPUMS.mergehouses median;
+ var HHINC;
+ weight HHWT;
+run;
+
+/* Household income */
+ods select freqplot;
+proc freq data=IPUMS.mergehouses;
+ format HHINC_CAT HHINC_CAT_f.;
+ tables HHINC_CAT / plots=freqplot(orient=vertical scale=percent);
+ weight HHWT;
+run;
+
+/* Persons below poverty line */
+proc freq data=IPUMS.people;
+ format POV POV_f.;
+ tables POV / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
+
+/* Persons below poverty line - Children (Under 18) - Seniors (65 and over) */
+proc sort data=IPUMS.people
+ out=IPUMS.sortpeople;
+ by AGEP_CAT2;
+run;
+proc gchart data=IPUMS.sortpeople;
+ format POV POV_f. AGEP_CAT2 AGEP_CAT2_f.;
+ by AGEP_CAT2;
+ donut POV / discrete clockwise slice=outside value=none percent=outside freq=PERWT;
+run;
+quit;
+proc datasets library=IPUMS nolist;
+ delete sortpeople;
+run;
+
+/* Mean travel time to work */
+proc means data=IPUMS.people mean;
+ var COMM;
+ weight PERWT;
+run;
+
+/* Means of transportation to work */
+proc freq data=IPUMS.people;
+ format COMM_CAT COMM_CAT_f.;
+ tables COMM_CAT / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
A => src/05_Families.sas +57 -0
@@ 1,57 @@
+libname IPUMS "/home/u44593168";
+
+/* Number of households */
+proc means data=IPUMS.houses sum;
+ var HHWT;
+run;
+
+/* Persons per household */
+proc means data=IPUMS.houses mean maxdec=1;
+ var NP_NUM;
+ weight HHWT;
+run;
+
+/* Population by household type */
+proc gchart data=IPUMS.people;
+ format HHT_CAT HHT_CAT_f.;
+ donut HHT_CAT / discrete clockwise slice=outside value=none percent=outside freq=PERWT;
+run;
+quit;
+
+/* Marital Status */
+proc gchart data=IPUMS.people;
+ format MARRIED MARRIED_f.;
+ donut MARRIED / discrete clockwise slice=outside value=none percent=outside freq=PERWT;
+run;
+quit;
+
+/* Marital status, by sex */
+proc sort data=IPUMS.people
+ out=IPUMS.sortpeople;
+ by SEX;
+run;
+ods select freqplot;
+proc freq data=IPUMS.sortpeople;
+ format SEX SEX_f. MAR_CAT MAR_CAT_f.;
+ by SEX;
+ tables MAR_CAT / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
+proc datasets library=IPUMS nolist;
+ delete sortpeople;
+run;
+
+/* Fertility */
+proc freq data=IPUMS.people;
+ format BIRTH BIRTH_f.;
+ tables BIRTH;
+ weight PERWT;
+run;
+
+/* Women who gave birth during past year, by age group */
+ods select freqplot;
+proc freq data=IPUMS.people;
+ format BIRTH BIRTH_f. AGEP_CAT_BIRTH AGEP_CAT_BIRTH_f.;
+ tables BIRTH*AGEP_CAT_BIRTH / plots=freqplot(orient=vertical scale=grouppercent);
+ weight PERWT;
+run;
A => src/06_Housing.sas +56 -0
@@ 1,56 @@
+libname IPUMS "/home/u44593168";
+
+/* Number of housing units */
+
+/* Occupied vs. Vacant */
+proc gchart data=IPUMS.houses;
+ format VACANT VACANT_f.;
+ donut VACANT / discrete clockwise slice=outside value=none percent=outside freq=HHWT;
+run;
+quit;
+
+/* Ownership of occupied units */
+proc gchart data=IPUMS.houses;
+ format OWN OWN_f.;
+ donut OWN / discrete clockwise slice=outside value=none percent=outside freq=HHWT;
+run;
+quit;
+
+/* Types of structure */
+proc gchart data=IPUMS.houses;
+ format BLD_CAT BLD_CAT_f.;
+ donut BLD_CAT / discrete clockwise slice=outside value=none percent=outside freq=HHWT;
+run;
+quit;
+
+/* Year moved in, by percentage of population */
+/* NOTE: Continuous data not available publicly */
+
+/* Median value of owner-occupied housing units */
+proc means data=IPUMS.houses median;
+ var VAL_OWN;
+ weight HHWT;
+run;
+
+/* Value of owner-occupied housing units */
+ods select freqplot;
+proc freq data=IPUMS.houses;
+ format VAL_OWN_CAT VAL_OWN_CAT_f.;
+ tables VAL_OWN_CAT / plots=freqplot(orient=vertical scale=percent);
+ weight HHWT;
+run;
+
+/* Moved since previous year */
+proc freq data=IPUMS.people;
+ format MIG_CAT MIG_CAT_f.;
+ tables MIG_CAT;
+ weight PERWT;
+run;
+
+/* Population migration since previous year */
+ods select freqplot;
+proc freq data=IPUMS.people;
+ format MIG_CAT2 MIG_CAT2_f.;
+ tables MIG_CAT2 / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
A => src/07_Social.sas +81 -0
@@ 1,81 @@
+libname IPUMS "/home/u44593168";
+
+/* High school grad or higher */
+proc freq data=IPUMS.people;
+ format HS HS_f.;
+ tables HS;
+ weight PERWT;
+run;
+
+/* Bachelor's degree or higher */
+proc freq data=IPUMS.people;
+ format COLLEGE COLLEGE_f.;
+ tables COLLEGE;
+ weight PERWT;
+run;
+
+/* Population by highest level of education */
+ods select freqplot;
+proc freq data=IPUMS.people;
+ format SCHL_CAT SCHL_CAT_f.;
+ tables SCHL_CAT / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
+
+/* Persons with language other than English spoken at home */
+proc freq data=IPUMS.people;
+ format LAN_CAT LAN_CAT_f.;
+ tables LAN_CAT;
+ weight PERWT;
+run;
+
+/* Language at home, children 5-17 - adults 18+ */
+proc sort data=IPUMS.people
+ out=IPUMS.sortpeople;
+ by AGEP_CAT3;
+run;
+ods select freqplot;
+proc freq data=IPUMS.sortpeople;
+ format LAN_CAT2 LAN_CAT2_f. AGEP_CAT3 AGEP_CAT3_f.;
+ by AGEP_CAT3;
+ tables LAN_CAT2 / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
+proc datasets library=IPUMS nolist;
+ delete sortpeople;
+run;
+
+/* Foreign-born population */
+proc freq data=IPUMS.people;
+ format FOREIGN FOREIGN_f.;
+ tables FOREIGN;
+ weight PERWT;
+run;
+
+/* Place of birth for foreign-born population */
+ods select freqplot;
+proc freq data=IPUMS.people;
+ format POBP_CAT POBP_CAT_f.;
+ tables POBP_CAT / plots=freqplot(orient=vertical scale=percent);
+ weight PERWT;
+run;
+
+/* Veteran status */
+proc freq data=IPUMS.people;
+ format VET VET_f.;
+ tables VET;
+ weight PERWT;
+run;
+
+/* Veterans by wartime service */
+proc freq data=IPUMS.people;
+ tables MLPJ2 MLPH2 MLPE2 MLPB2 MLPA2;
+ weight PERWT;
+run;
+
+/* Total veterans - Male - Female */
+proc freq data=IPUMS.people;
+ format VET VET_f. SEX SEX_f.;
+ tables VET*SEX / nopercent nocol norow nocum;
+ weight PERWT;
+run;