Guest User

Untitled

a guest
Jul 20th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.57 KB | None | 0 0
  1. ## Table of contents for CHAS data tables
  2. # T1: Income x race (x housing problems x tenure)
  3. # T2: Income x race (x severe housing problems x tenure)
  4. # T3: Income x housing problem severity, ordered (x tenure)
  5. # T4: Household type x household size x housing problems (x tenure)
  6. # T5: Income x elderly occupant x housing problems (x tenure)
  7. # T6: DISCONTINUED (Income x disability x housing problems)
  8. # T7: Income x cost burden x household type (x tenure)
  9. # T8: Income x cost burden x facilities (x tenure)
  10. # T9: Cost burden x race (x tenure)
  11. # T10: Income x persons per room x family type (x tenure)
  12. # T11: Detailed income x housing problems (x tenure)
  13. # T12: Income x year built x cost burden (x tenure)
  14. # T13: Income x year built x children (x tenure)
  15. # T14A: Home price x bedrooms x facilities (VACANT FOR SALE)
  16. # T14B: Home price x bedrooms x facilities (VACANT FOR RENT)
  17. # T15A: Income x home value x bedrooms x facilities (owner with mortgage)
  18. # T15B: Income x home value x bedrooms x facilities (owner without mortgage)
  19. # T15C: Income x home value x bedrooms x facilities (renter)
  20. # T16: Income x household type x housing problems (x tenure)
  21. # T17A: Asking price x units in structure (FOR SALE)
  22. # T17B: Rent x units in structure (RENTALS)
  23. # T18A: Income x home value x units in structure (owner with a mortgage)
  24. # T18B: Income x home value x units in structure (owner without a mortage)
  25. # T18C: Income x rent x units in structure (renter)
  26.  
  27. library(tidyverse)
  28.  
  29. # Function to cast your CHAS data from wide to long format
  30. cast_chas_long <- function(chas_table, header_vars = 7) {
  31. # header_vars is the number of variables that serve as headers before the actual data starts
  32. ## If using the cleanup_chas_*() functions, then the default value is 7
  33. require(tidyr)
  34. fields_to_melt <- names(chas_table[,as.numeric(header_vars+1):length(names(chas_table))])
  35. melted <- gather(chas_table, fields_to_melt, key = 'variable', value = 'values')
  36. melted <- separate(data = melted, col = variable, into = c('table', 'variable'))
  37. melted <- separate(data = melted, col = variable, into = c('var_type', 'var_num'), sep = 3)
  38. melted$var_num <- paste0('v',melted$var_num)
  39. melted <- spread(melted, var_type, values)
  40. melted$moesq <- melted$moe * melted$moe
  41. return(melted)
  42. }
  43.  
  44. # Function to cleanup tract-level CHAS data
  45. cleanup_chas_tract <- function(chas_tract_data, year = 2015) {
  46. refcols <- c('source', 'sumlevel', 'geoid', 'geoid2', 'name', 'st', 'cnty_plc')
  47. chas_tract_data <- chas_tract_data %>% select(-tract)
  48. names(chas_tract_data)[names(chas_tract_data) == 'cnty'] <- 'cnty_plc'
  49. chas_tract_data$geoid2 <- substr(chas_tract_data$geoid, 8, 18)
  50. chas_tract_data <- chas_tract_data[, c(refcols, setdiff(names(chas_tract_data), refcols))]
  51. return(chas_tract_data)
  52. }
  53.  
  54. # Function to cleanup state-level CHAS data
  55. cleanup_chas_st <- function(chas_st_data, year = 2015) {
  56. refcols <- c('source', 'sumlevel', 'geoid', 'geoid2', 'name', 'st', 'cnty_plc')
  57. chas_st_data$cnty_plc <- ''
  58. chas_st_data$geoid2 <- substr(chas_st_data$geoid, 8, 10)
  59. chas_st_data <- chas_st_data[, c(refcols, setdiff(names(chas_st_data), refcols))]
  60. return(chas_st_data)
  61. }
  62.  
  63. # Function to cleanup place-level CHAS data
  64. cleanup_chas_plc <- function(chas_plc_data, year = 2015) {
  65. refcols <- c('source', 'sumlevel', 'geoid', 'geoid2', 'name', 'st', 'cnty_plc')
  66. names(chas_plc_data)[names(chas_plc_data) == 'place'] <- 'cnty_plc'
  67. chas_plc_data$geoid2 <- substr(chas_plc_data$geoid, 8, 14)
  68. chas_plc_data <- chas_plc_data[, c(refcols, setdiff(names(chas_plc_data), refcols))]
  69. return(chas_plc_data)
  70. }
  71.  
  72. # Function to cleanup county-level CHAS data
  73. cleanup_chas_cnty <- function(chas_cnty_data, year = 2015) {
  74. refcols <- c('source', 'sumlevel', 'geoid', 'geoid2', 'name', 'st', 'cnty_plc')
  75. names(chas_cnty_data)[names(chas_cnty_data) == 'cnty'] <- 'cnty_plc'
  76. chas_cnty_data$geoid2 <- substr(chas_cnty_data$geoid, 8, 13)
  77. chas_cnty_data <- chas_cnty_data[, c(refcols, setdiff(names(chas_cnty_data), refcols))]
  78. return(chas_cnty_data)
  79. }
  80.  
  81. # Function to cast cleaned up long-format chas data to wide format
  82. cast_chas_wide <- function(long_cleaned_chas_table) {
  83. long_cleaned_chas_table <- long_cleaned_chas_table %>%
  84. gather(variable, value, -(source:var_num)) %>%
  85. unite(temp, var_num, variable) %>%
  86. spread(temp, value)
  87. return(long_cleaned_chas_table)
  88. }
  89.  
  90. # Establish geoid lists for interesting geographies
  91. msa_geoid2_list <- c('41005', '41009', '41051', '41067', '41071', '53011', '53059')
  92. orwa_place_list <- c('4159000', '4123850', '4164900', '4131250', '4105350', '4134100', '4105800',
  93. '4147000', '4173650', '4101650', '4140550', '4155200', '4145000', '4174950',
  94. '4180150', '4148650', '4182800', '4126200', '4183750', '4105950', '4152100',
  95. '4153900', '4167100', '4141650', '4110750', '4172950', '4112150', '4174850',
  96. '4132050', '4129000', '4164600', '4153988', '4165250', '4124250', '4117800',
  97. '4163010', '4112050', '4115550', '4180900', '4134900', '4160900', '4165500',
  98. '5304475', '5309480', '5336710', '5358410', '5374060', '5376405', '5379625')
  99. peer_city_list <- c('0666000', '0667000', '4805000', '1836003', '0820000', '4752006', '2743000', '2758000', '4967000')
  100. sw_corridor_list <- c('41051005800', '41051005900', '41051006001', '41051006002', '41051006200', '41051006402', '41051006403',
  101. '41051006404', '41051006501', '41051006502', '41051006602', '41005020302', '41005020304', '41005020401',
  102. '41067030600', '41067030700', '41067030801', '41067030806', '41067030900', '41067031912', '41067032005')
  103. icura_list <- c('41051002401' , '41051002402' , '41051002501' , '41051002502' , '41051003100' , '41051003200' , '41051003301' ,
  104. '41051003302' , '41051003401' , '41051003402' , '41051003501' , '41051003502' , '41051003601' , '41051003602' ,
  105. '41051003701' , '41051003702' , '41051003801' , '41051003802' , '41051003803' , '41051003901' , '41051003902' ,
  106. '41051002303' , '41051002203')
  107.  
  108. # Load in Table 1 for various geographic entities / summary levels
  109. chas.tct.2015.t1 <- read_csv('C:/Users/nkobel/Desktop/Large_files/CHAS/data/tract/2011thru2015-140-csv/140/Table1.csv')
  110. chas.cnty.2015.t1 <- read_csv('C:/Users/nkobel/Desktop/Large_files/CHAS/data/county/2011thru2015-050-csv/050/Table1.csv')
  111. chas.st.2015.t1 <- read_csv('C:/Users/nkobel/Desktop/Large_files/CHAS/data/state/2011thru2015-040-csv/040/Table1.csv')
  112. chas.plc.2015.t1 <- read_csv('C:/Users/nkobel/Desktop/Large_files/CHAS/data/place/2011thru2015-160-csv/160/Table1.csv')
  113.  
  114. # Load in Table 11 for various geographic entities / summary levels
  115. chas.tct.2015.t11 <- read_csv('C:/Users/nkobel/Desktop/Large_files/CHAS/data/tract/2011thru2015-140-csv/140/Table11.csv')
  116. chas.cnty.2015.t11 <- read_csv('C:/Users/nkobel/Desktop/Large_files/CHAS/data/county/2011thru2015-050-csv/050/Table11.csv')
  117. chas.st.2015.t11 <- read_csv('C:/Users/nkobel/Desktop/Large_files/CHAS/data/state/2011thru2015-040-csv/040/Table11.csv')
  118. chas.plc.2015.t11 <- read_csv('C:/Users/nkobel/Desktop/Large_files/CHAS/data/place/2011thru2015-160-csv/160/Table11.csv')
  119.  
  120. # Clean up pre-loaded geographies so that they are in a consistent format
  121. chas.tct.2015.t1 <- cleanup_chas_tract(chas.tct.2015.t1)
  122. chas.plc.2015.t1 <- cleanup_chas_plc(chas.plc.2015.t1)
  123. chas.cnty.2015.t1 <- cleanup_chas_cnty(chas.cnty.2015.t1)
  124. chas.st.2015.t1 <- cleanup_chas_st(chas.st.2015.t1)
  125.  
  126. chas.tct.2015.t11 <- cleanup_chas_tract(chas.tct.2015.t11)
  127. chas.plc.2015.t11 <- cleanup_chas_plc(chas.plc.2015.t11)
  128. chas.cnty.2015.t11 <- cleanup_chas_cnty(chas.cnty.2015.t11)
  129. chas.st.2015.t11 <- cleanup_chas_st(chas.st.2015.t11)
  130.  
  131. # Bind all geographies together into a single file (by year by table)
  132. chas.2015.t1 <- rbind(chas.tct.2015.t1, chas.plc.2015.t1, chas.cnty.2015.t1, chas.st.2015.t1)
  133. chas.2015.t11 <- rbind(chas.tct.2015.t11, chas.plc.2015.t11, chas.cnty.2015.t11, chas.st.2015.t11)
  134.  
  135. # Example of casting data into long format for MSA geographies and peer cities
  136. chas.msa.15.t1 <- cast_chas_long(chas.2015.t1 %>% filter( (geoid2 %in% msa_geoid2_list) |
  137. (geoid2 %in% orwa_place_list) |
  138. (geoid2 %in% c('41', '53')) |
  139. (geoid2 %in% peer_city_list) ), 7)
  140.  
  141. chas.msa.15.t11 <- cast_chas_long(chas.2015.t11 %>% filter( (geoid2 %in% msa_geoid2_list) |
  142. (geoid2 %in% orwa_place_list) |
  143. (geoid2 %in% c('41', '53')) |
  144. (geoid2 %in% peer_city_list) ), 7)
  145. # Get detailed income distribution by tenure
  146. get_detailed_income_distribution <- function(geoid2_list, chas_t11) {
  147. # census places must prepend the state fips (2-dig), e.g. '4159000' wrapped in quotes
  148. chas_t11 <- cast_chas_long(chas_t11 %>% filter(geoid2 %in% geoid2_list), 7)
  149. chas_t11 <- cast_chas_wide(chas_t11)
  150. chas_t11 %>%
  151. summarize(total_hh = sum(v1_est),
  152. total_000_to_020_own = sum(v4_est) + sum(v18_est) + sum(v32_est),
  153. total_000_to_020_rent = sum(v47_est) + sum(v61_est) + sum(v75_est),
  154. total_021_to_030_own = sum(v5_est) + sum(v19_est) + sum(v33_est),
  155. total_021_to_030_rent = sum(v48_est) + sum(v62_est) + sum(v76_est),
  156. total_031_to_040_own = sum(v6_est) + sum(v20_est) + sum(v34_est),
  157. total_031_to_040_rent = sum(v49_est) + sum(v63_est) + sum(v77_est),
  158. total_041_to_050_own = sum(v7_est) + sum(v21_est) + sum(v35_est),
  159. total_041_to_050_rent = sum(v50_est) + sum(v64_est) + sum(v78_est),
  160. total_051_to_060_own = sum(v8_est) + sum(v22_est) + sum(v36_est),
  161. total_051_to_060_rent = sum(v51_est) + sum(v65_est) + sum(v79_est),
  162. total_061_to_065_own = sum(v9_est) + sum(v23_est) + sum(v37_est),
  163. total_061_to_065_rent = sum(v52_est) + sum(v66_est) + sum(v80_est),
  164. total_066_to_080_own = sum(v10_est) + sum(v24_est) + sum(v38_est),
  165. total_066_to_080_rent = sum(v53_est) + sum(v67_est) + sum(v81_est),
  166. total_081_to_095_own = sum(v11_est) + sum(v25_est) + sum(v39_est),
  167. total_081_to_095_rent = sum(v54_est) + sum(v68_est) + sum(v82_est),
  168. total_096_to_100_own = sum(v12_est) + sum(v26_est) + sum(v40_est),
  169. total_096_to_100_rent = sum(v55_est) + sum(v69_est) + sum(v83_est),
  170. total_101_to_115_own = sum(v13_est) + sum(v27_est) + sum(v41_est),
  171. total_101_to_115_rent = sum(v56_est) + sum(v70_est) + sum(v84_est),
  172. total_116_to_120_own = sum(v14_est) + sum(v28_est) + sum(v42_est),
  173. total_116_to_120_rent = sum(v57_est) + sum(v71_est) + sum(v85_est),
  174. total_121_to_140_own = sum(v15_est) + sum(v29_est) + sum(v43_est),
  175. total_121_to_140_rent = sum(v58_est) + sum(v72_est) + sum(v86_est),
  176. total_141_to_999_own = sum(v16_est) + sum(v30_est) + sum(v44_est),
  177. total_141_to_999_rent = sum(v59_est) + sum(v73_est) + sum(v87_est),
  178. total_000_to_020 = total_000_to_020_own + total_000_to_020_rent,
  179. total_021_to_030 = total_021_to_030_own + total_021_to_030_rent,
  180. total_031_to_040 = total_031_to_040_own + total_031_to_040_rent,
  181. total_041_to_050 = total_041_to_050_own + total_041_to_050_rent,
  182. total_051_to_060 = total_051_to_060_own + total_051_to_060_rent,
  183. total_061_to_065 = total_061_to_065_own + total_061_to_065_rent,
  184. total_066_to_080 = total_066_to_080_own + total_066_to_080_rent,
  185. total_081_to_095 = total_081_to_095_own + total_081_to_095_rent,
  186. total_096_to_100 = total_096_to_100_own + total_096_to_100_rent,
  187. total_101_to_115 = total_101_to_115_own + total_101_to_115_rent,
  188. total_116_to_120 = total_116_to_120_own + total_116_to_120_rent,
  189. total_121_to_140 = total_121_to_140_own + total_121_to_140_rent,
  190. total_141_to_999 = total_141_to_999_own + total_141_to_999_rent,
  191. share_000_to_020 = total_000_to_020 / total_hh,
  192. share_021_to_030 = total_021_to_030 / total_hh,
  193. share_031_to_040 = total_031_to_040 / total_hh,
  194. share_041_to_050 = total_041_to_050 / total_hh,
  195. share_051_to_060 = total_051_to_060 / total_hh,
  196. share_061_to_065 = total_061_to_065 / total_hh,
  197. share_066_to_080 = total_066_to_080 / total_hh,
  198. share_081_to_095 = total_081_to_095 / total_hh,
  199. share_096_to_100 = total_096_to_100 / total_hh,
  200. share_101_to_115 = total_101_to_115 / total_hh,
  201. share_116_to_120 = total_116_to_120 / total_hh,
  202. share_121_to_140 = total_121_to_140 / total_hh,
  203. share_141_to_999 = total_141_to_999 / total_hh,
  204. share_000_to_030 = share_000_to_020 + share_021_to_030,
  205. share_031_to_060 = share_031_to_040 + share_041_to_050 + share_051_to_060,
  206. share_061_to_080 = share_061_to_065 + share_066_to_080,
  207. share_081_to_100 = share_081_to_095 + share_096_to_100,
  208. share_101_to_120 = share_101_to_115 + share_116_to_120,
  209. share_121_to_999 = share_121_to_140 + share_141_to_999
  210. )
  211. }
  212.  
  213. # Example for detailed income distribution
  214. glimpse(get_detailed_income_distribution(sw_corridor_list, chas.tct.2015.t11))
  215.  
  216. # Simple function to get low-income households by tenure
  217. get_low_income_tenure <- function(geoid2_list, chas_t1) {
  218. # census places must prepend the state fips (2-dig), e.g. '4159000' wrapped in quotes
  219. chas_t1 <- cast_chas_long(chas_t1 %>% filter(geoid2 %in% geoid2_list), 7)
  220. chas_t1 <- cast_chas_wide(chas_t1)
  221. chas_t1 %>%
  222. summarize(total_hh = sum(v1_est),
  223. total_hh_own = sum(v2_est),
  224. total_hh_rent = sum(v126_est),
  225. total_li_own = sum(v4_est) + sum(v12_est) + sum(v20_est) + sum(v45_est) + sum(v53_est) + sum(v61_est) + sum(v86_est) + sum(v94_est) + sum(v102_est),
  226. total_li_rent = sum(v128_est) + sum(v136_est) + sum(v144_est) + sum(v169_est) + sum(v177_est) + sum(v185_est) + sum(v210_est) + sum(v218_est) + sum(v226_est),
  227. total_li = total_li_own + total_li_rent,
  228. share_li = total_li / total_hh,
  229. share_own = total_hh_own / total_hh,
  230. share_rent = total_hh_rent / total_hh,
  231. share_li_that_own = total_li_own / total_li,
  232. share_li_that_rent = total_li_rent / total_li,
  233. share_hh_that_li_own = total_li_own / total_hh,
  234. share_hh_that_li_rent = total_li_rent / total_hh
  235. )
  236. }
  237.  
  238. # Examples for MSA total, SW Corridor and Portland
  239. glimpse(get_low_income_tenure(msa_geoid2_list, chas.cnty.2015.t1))
  240. glimpse(get_low_income_tenure('4159000', chas.plc.2015.t1))
  241. glimpse(get_low_income_tenure(sw_corridor_list, chas.tct.2015.t1))
  242.  
  243. # More complex function to get low-income households by race by tenure
  244. get_income_race_tenure <- function(geoid2_list, chas_t1) {
  245. # census places must prepend the state fips (2-dig), e.g. '4159000' wrapped in quotes
  246. chas_t1 <- cast_chas_long(chas_t1 %>% filter(geoid2 %in% geoid2_list), 7)
  247. chas_t1 <- cast_chas_wide(chas_t1)
  248. chas_t1 <- chas_t1 %>%
  249. summarize(total_hh = sum(v1_est),
  250. total_white = sum(v5_est) + sum(v13_est) + sum(v21_est) + sum(v29_est) + sum(v37_est) +
  251. sum(v46_est) + sum(v54_est) + sum(v62_est) + sum(v70_est) + sum(v78_est) + sum(v87_est) +
  252. sum(v95_est) + sum(v103_est) + sum(v111_est) + sum(v119_est) + sum(v129_est) + sum(v137_est) +
  253. sum(v145_est) + sum(v153_est) + sum(v161_est) + sum(v170_est) + sum(v178_est) + sum(v186_est) +
  254. sum(v194_est) + sum(v202_est) + sum(v211_est) + sum(v219_est) + sum(v227_est) + sum(v235_est) + sum(v243_est),
  255. total_aian = sum(v8_est) + sum(v16_est) + sum(v24_est) + sum(v32_est) + sum(v40_est) + sum(v49_est) +
  256. sum(v57_est) + sum(v65_est) + sum(v73_est) + sum(v81_est) + sum(v90_est) + sum(v98_est) +
  257. sum(v106_est) + sum(v114_est) + sum(v122_est) + sum(v132_est) + sum(v140_est) + sum(v148_est) +
  258. sum(v156_est) + sum(v164_est) + sum(v173_est) + sum(v181_est) + sum(v189_est) + sum(v197_est) +
  259. sum(v205_est) + sum(v214_est) + sum(v222_est) + sum(v230_est) + sum(v238_est) + sum(v246_est),
  260. total_asian = sum(v7_est) + sum(v15_est) + sum(v23_est) + sum(v31_est) + sum(v39_est) + sum(v48_est) +
  261. sum(v56_est) + sum(v64_est) + sum(v72_est) + sum(v80_est) + sum(v89_est) + sum(v97_est) +
  262. sum(v105_est) + sum(v113_est) + sum(v121_est) + sum(v131_est) + sum(v139_est) + sum(v147_est) +
  263. sum(v155_est) + sum(v163_est) + sum(v172_est) + sum(v180_est) + sum(v188_est) + sum(v196_est) +
  264. sum(v204_est) + sum(v213_est) + sum(v221_est) + sum(v229_est) + sum(v237_est) + sum(v245_est),
  265. total_black = sum(v6_est) + sum(v14_est) + sum(v22_est) + sum(v30_est) + sum(v38_est) + sum(v47_est) +
  266. sum(v55_est) + sum(v63_est) + sum(v71_est) + sum(v79_est) + sum(v88_est) + sum(v96_est) +
  267. sum(v104_est) + sum(v112_est) + sum(v120_est) + sum(v130_est) + sum(v138_est) + sum(v146_est) +
  268. sum(v154_est) + sum(v162_est) + sum(v171_est) + sum(v179_est) + sum(v187_est) + sum(v195_est) +
  269. sum(v203_est) + sum(v212_est) + sum(v220_est) + sum(v228_est) + sum(v236_est) + sum(v244_est),
  270. total_hispanic = sum(v10_est) + sum(v18_est) + sum(v26_est) + sum(v34_est) + sum(v42_est) + sum(v51_est) +
  271. sum(v59_est) + sum(v67_est) + sum(v75_est) + sum(v83_est) + sum(v92_est) + sum(v100_est) +
  272. sum(v108_est) + sum(v116_est) + sum(v124_est) + sum(v134_est) + sum(v142_est) + sum(v150_est) +
  273. sum(v158_est) + sum(v166_est) + sum(v175_est) + sum(v183_est) + sum(v191_est) + sum(v199_est) +
  274. sum(v207_est) + sum(v216_est) + sum(v224_est) + sum(v232_est) + sum(v240_est) + sum(v248_est),
  275. total_nhpi = sum(v9_est) + sum(v17_est) + sum(v25_est) + sum(v33_est) + sum(v41_est) + sum(v50_est) +
  276. sum(v58_est) + sum(v66_est) + sum(v74_est) + sum(v82_est) + sum(v91_est) + sum(v99_est) +
  277. sum(v107_est) + sum(v115_est) + sum(v123_est) + sum(v133_est) + sum(v141_est) + sum(v149_est) +
  278. sum(v157_est) + sum(v165_est) + sum(v174_est) + sum(v182_est) + sum(v190_est) + sum(v198_est) +
  279. sum(v206_est) + sum(v215_est) + sum(v223_est) + sum(v231_est) + sum(v239_est) + sum(v247_est),
  280. total_other = sum(v11_est) + sum(v19_est) + sum(v27_est) + sum(v35_est) + sum(v43_est) + sum(v52_est) +
  281. sum(v60_est) + sum(v68_est) + sum(v76_est) + sum(v84_est) + sum(v93_est) + sum(v101_est) +
  282. sum(v109_est) + sum(v117_est) + sum(v125_est) + sum(v135_est) + sum(v143_est) + sum(v151_est) +
  283. sum(v159_est) + sum(v167_est) + sum(v176_est) + sum(v184_est) + sum(v192_est) + sum(v200_est) +
  284. sum(v208_est) + sum(v217_est) + sum(v225_est) + sum(v233_est) + sum(v241_est) + sum(v249_est),
  285. total_poc = total_aian + total_asian + total_black + total_nhpi + total_other + total_hispanic,
  286. li_white_owner = sum(v5_est) + sum(v13_est) + sum(v21_est) + sum(v46_est) + sum(v54_est) +
  287. sum(v62_est) + sum(v87_est) + sum(v95_est) + sum(v103_est),
  288. li_white_renter = sum(v129_est) + sum(v137_est) + sum(v145_est) + sum(v170_est) + sum(v178_est) +
  289. sum(v186_est) + sum(v211_est) + sum(v219_est) + sum(v227_est),
  290. li_white = li_white_owner + li_white_renter,
  291. li_aian_owner = sum(v8_est) + sum(v16_est) + sum(v24_est) + sum(v49_est) + sum(v57_est) +
  292. sum(v65_est) + sum(v90_est) + sum(v98_est) + sum(v106_est),
  293. li_aian_renter = sum(v132_est) + sum(v140_est) + sum(v148_est) + sum(v173_est) + sum(v181_est) +
  294. sum(v189_est) + sum(v214_est) + sum(v222_est) + sum(v230_est),
  295. li_aian = li_aian_owner + li_aian_renter,
  296. li_asian_owner = sum(v7_est) + sum(v15_est) + sum(v23_est) + sum(v48_est) + sum(v56_est) +
  297. sum(v64_est) + sum(v89_est) + sum(v97_est) + sum(v105_est),
  298. li_asian_renter = sum(v131_est) + sum(v139_est) + sum(v147_est) + sum(v172_est) + sum(v180_est) +
  299. sum(v188_est) + sum(v213_est) + sum(v221_est) + sum(v229_est),
  300. li_asian = li_asian_owner + li_asian_renter,
  301. li_black_owner = sum(v6_est) + sum(v14_est) + sum(v22_est) + sum(v47_est) + sum(v55_est) +
  302. sum(v63_est) + sum(v88_est) + sum(v96_est) + sum(v104_est),
  303. li_black_renter = sum(v130_est) + sum(v138_est) + sum(v146_est) + sum(v171_est) + sum(v179_est) +
  304. sum(v187_est) + sum(v212_est) + sum(v220_est) + sum(v228_est),
  305. li_black = li_black_owner + li_black_renter,
  306. li_hispanic_owner = sum(v10_est) + sum(v18_est) + sum(v26_est) + sum(v51_est) + sum(v59_est) +
  307. sum(v67_est) + sum(v92_est) + sum(v100_est) + sum(v108_est),
  308. li_hispanic_renter = sum(v134_est) + sum(v142_est) + sum(v150_est) + sum(v175_est) + sum(v183_est) +
  309. sum(v191_est) + sum(v216_est) + sum(v224_est) + sum(v232_est),
  310. li_hispanic = li_hispanic_owner + li_hispanic_renter,
  311. li_nhpi_owner = sum(v9_est) + sum(v17_est) + sum(v25_est) + sum(v50_est) + sum(v58_est) +
  312. sum(v66_est) + sum(v91_est) + sum(v99_est) + sum(v107_est),
  313. li_nhpi_renter = sum(v133_est) + sum(v141_est) + sum(v149_est) + sum(v174_est) + sum(v182_est) +
  314. sum(v190_est) + sum(v215_est) + sum(v223_est) + sum(v231_est),
  315. li_nhpi = li_nhpi_owner + li_nhpi_renter,
  316. li_other_owner = sum(v11_est) + sum(v19_est) + sum(v27_est) + sum(v52_est) + sum(v60_est) +
  317. sum(v68_est) + sum(v93_est) + sum(v101_est) + sum(v109_est),
  318. li_other_renter = sum(v135_est) + sum(v143_est) + sum(v151_est) + sum(v176_est) + sum(v184_est) +
  319. sum(v192_est) + sum(v217_est) + sum(v225_est) + sum(v233_est),
  320. li_other = li_other_owner + li_other_renter,
  321. li_poc_owner = li_aian_owner + li_asian_owner + li_black_owner + li_hispanic_owner + li_nhpi_owner + li_other_owner,
  322. li_poc_renter = li_aian_renter + li_asian_renter + li_black_renter + li_hispanic_renter + li_nhpi_renter + li_other_renter,
  323. li_poc = li_poc_owner + li_poc_renter,
  324. li_owner = li_white_owner + li_poc_owner,
  325. li_renter = li_white_renter + li_poc_renter,
  326. li_total = li_owner + li_renter,
  327. share_hh_that_li = li_total / total_hh,
  328. share_hh_that_li_owner = li_owner / total_hh,
  329. share_hh_that_li_renter = li_renter / total_hh,
  330. share_poc_that_li = li_poc / total_poc,
  331. share_poc_that_li_renter = li_poc_renter / total_poc,
  332. share_white_that_li = li_white / total_white,
  333. share_white_that_li_renter = li_white_renter / total_white,
  334. share_hh_that_poc = total_poc / total_hh,
  335. share_hh_that_li_poc = li_poc / total_hh,
  336. share_hh_that_li_poc_renter = li_poc_renter / total_hh,
  337. ratio_li_poc_vs_white = share_poc_that_li / share_white_that_li,
  338. ratio_li_renter_poc_vs_white = share_poc_that_li_renter / share_white_that_li_renter,
  339. total_hh_moe = sqrt(sum(v1_moesq)),
  340. total_white_moe = sqrt( sum(v5_moesq) + sum(v13_moesq) + sum(v21_moesq) + sum(v29_moesq) + sum(v37_moesq) +
  341. sum(v46_moesq) + sum(v54_moesq) + sum(v62_moesq) + sum(v70_moesq) + sum(v78_moesq) +
  342. sum(v87_moesq) + sum(v95_moesq) + sum(v103_moesq) + sum(v111_moesq) + sum(v119_moesq) +
  343. sum(v129_moesq) + sum(v137_moesq) + sum(v145_moesq) + sum(v153_moesq) + sum(v161_moesq) +
  344. sum(v170_moesq) + sum(v178_moesq) + sum(v186_moesq) + sum(v194_moesq) + sum(v202_moesq) +
  345. sum(v211_moesq) + sum(v219_moesq) + sum(v227_moesq) + sum(v235_moesq) + sum(v243_moesq) ),
  346. total_aian_moe = sqrt( sum(v8_moesq) + sum(v16_moesq) + sum(v24_moesq) + sum(v32_moesq) +
  347. sum(v40_moesq) + sum(v49_moesq) + sum(v57_moesq) + sum(v65_moesq) +
  348. sum(v73_moesq) + sum(v81_moesq) + sum(v90_moesq) + sum(v98_moesq) +
  349. sum(v106_moesq) + sum(v114_moesq) + sum(v122_moesq) + sum(v132_moesq) +
  350. sum(v140_moesq) + sum(v148_moesq) + sum(v156_moesq) + sum(v164_moesq) +
  351. sum(v173_moesq) + sum(v181_moesq) + sum(v189_moesq) + sum(v197_moesq) +
  352. sum(v205_moesq) + sum(v214_moesq) + sum(v222_moesq) + sum(v230_moesq) +
  353. sum(v238_moesq) + sum(v246_moesq) ),
  354. total_asian_moe = sqrt( sum(v7_moesq) + sum(v15_moesq) + sum(v23_moesq) + sum(v31_moesq) +
  355. sum(v39_moesq) + sum(v48_moesq) + sum(v56_moesq) + sum(v64_moesq) +
  356. sum(v72_moesq) + sum(v80_moesq) + sum(v89_moesq) + sum(v97_moesq) +
  357. sum(v105_moesq) + sum(v113_moesq) + sum(v121_moesq) + sum(v131_moesq) +
  358. sum(v139_moesq) + sum(v147_moesq) + sum(v155_moesq) + sum(v163_moesq) +
  359. sum(v172_moesq) + sum(v180_moesq) + sum(v188_moesq) + sum(v196_moesq) +
  360. sum(v204_moesq) + sum(v213_moesq) + sum(v221_moesq) + sum(v229_moesq) +
  361. sum(v237_moesq) + sum(v245_moesq) ),
  362. total_black_moe = sqrt( sum(v6_moesq) + sum(v14_moesq) + sum(v22_moesq) + sum(v30_moesq) +
  363. sum(v38_moesq) + sum(v47_moesq) + sum(v55_moesq) + sum(v63_moesq) +
  364. sum(v71_moesq) + sum(v79_moesq) + sum(v88_moesq) + sum(v96_moesq) +
  365. sum(v104_moesq) + sum(v112_moesq) + sum(v120_moesq) + sum(v130_moesq) +
  366. sum(v138_moesq) + sum(v146_moesq) + sum(v154_moesq) + sum(v162_moesq) +
  367. sum(v171_moesq) + sum(v179_moesq) + sum(v187_moesq) + sum(v195_moesq) +
  368. sum(v203_moesq) + sum(v212_moesq) + sum(v220_moesq) + sum(v228_moesq) +
  369. sum(v236_moesq) + sum(v244_moesq) ),
  370. total_hispanic_moe = sqrt( sum(v10_moesq) + sum(v18_moesq) + sum(v26_moesq) + sum(v34_moesq) +
  371. sum(v42_moesq) + sum(v51_moesq) + sum(v59_moesq) + sum(v67_moesq) +
  372. sum(v75_moesq) + sum(v83_moesq) + sum(v92_moesq) + sum(v100_moesq) +
  373. sum(v108_moesq) + sum(v116_moesq) + sum(v124_moesq) + sum(v134_moesq) +
  374. sum(v142_moesq) + sum(v150_moesq) + sum(v158_moesq) + sum(v166_moesq) +
  375. sum(v175_moesq) + sum(v183_moesq) + sum(v191_moesq) + sum(v199_moesq) +
  376. sum(v207_moesq) + sum(v216_moesq) + sum(v224_moesq) + sum(v232_moesq) +
  377. sum(v240_moesq) + sum(v248_moesq) ),
  378. total_nhpi_moe = sqrt( sum(v9_moesq) + sum(v17_moesq) + sum(v25_moesq) + sum(v33_moesq) + sum(v41_moesq) +
  379. sum(v50_moesq) + sum(v58_moesq) + sum(v66_moesq) + sum(v74_moesq) + sum(v82_moesq) +
  380. sum(v91_moesq) + sum(v99_moesq) + sum(v107_moesq) + sum(v115_moesq) + sum(v123_moesq) +
  381. sum(v133_moesq) + sum(v141_moesq) + sum(v149_moesq) + sum(v157_moesq) + sum(v165_moesq) +
  382. sum(v174_moesq) + sum(v182_moesq) + sum(v190_moesq) + sum(v198_moesq) + sum(v206_moesq) +
  383. sum(v215_moesq) + sum(v223_moesq) + sum(v231_moesq) + sum(v239_moesq) + sum(v247_moesq) ),
  384. total_other_moe = sqrt( sum(v11_moesq) + sum(v19_moesq) + sum(v27_moesq) + sum(v35_moesq) + sum(v43_moesq) +
  385. sum(v52_moesq) + sum(v60_moesq) + sum(v68_moesq) + sum(v76_moesq) +
  386. sum(v84_moesq) + sum(v93_moesq) + sum(v101_moesq) + sum(v109_moesq) +
  387. sum(v117_moesq) + sum(v125_moesq) + sum(v135_moesq) + sum(v143_moesq) +
  388. sum(v151_moesq) + sum(v159_moesq) + sum(v167_moesq) + sum(v176_moesq) +
  389. sum(v184_moesq) + sum(v192_moesq) + sum(v200_moesq) + sum(v208_moesq) +
  390. sum(v217_moesq) + sum(v225_moesq) + sum(v233_moesq) + sum(v241_moesq) +
  391. sum(v249_moesq) ),
  392. total_poc_moe = sqrt(total_aian_moe^2 + total_asian_moe^2 + total_black_moe^2 + total_nhpi_moe^2 + total_other_moe^2 + total_hispanic_moe^2) )
  393. return(chas_t1)
  394. }
  395.  
  396. # Examples for MSA total, SW Corridor and Portland
  397. glimpse(get_income_race_tenure(msa_geoid2_list, chas.cnty.2015.t1))
  398. glimpse(get_income_race_tenure(sw_corridor_list, chas.tct.2015.t1))
  399. glimpse(get_income_race_tenure('4159000', chas.plc.2015.t1))
Add Comment
Please, Sign In to add comment