diff --git a/OrangeDot6_files/final_report/orange-dot-6-final-knit.Rmd b/OrangeDot6_files/final_report/orange-dot-6-final-knit.Rmd new file mode 100644 index 0000000..575c733 --- /dev/null +++ b/OrangeDot6_files/final_report/orange-dot-6-final-knit.Rmd @@ -0,0 +1,1528 @@ +--- +title: "Orange Dot Report 6.0" +subtitle: "Family Self-Sufficiency in the Charlottesville Region: Albemarle, Buckingham, Fluvanna, Greene, Louisa, Nelson counties & the City of Charlottesville, Virginia" +date: "October 21, 2024" +author: "Elizabeth Mitchell, Michele Claibourn, and Ridge Schuyler" +output: + word_document: + reference_docx: "styles.docx" + toc: true + toc_depth: 4 +--- +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE) + +knitr::opts_template$set(fullwidth_table = list( + fig.width = 6, fig.height = 4, + fig.retina = 2, out.width = '100%' +), +fullwidth_bar = list( + fig.width = 6.5, fig.height = 5.5, + fig.retina = 2 +), +fullwidth_map = list( + fig.width = 7, fig.height=8, + fig.retina = 2, out.width = '100%' +)) + +# Load packages ---- +library(tidyverse) +library(tidycensus) +library(scales) +library(ggspatial) +library(tigris) +library(readxl) +library(stringr) +library(sf) +library(ggthemes) +library(rcartocolor) +library(patchwork) +library(gt) +library(ggpol) +library(ggrepel) + +# Tract geometries ---- +county_codes <- c("003", "540", "065", "079", "109", "125", "029") +tract_geo <- tracts(state = "VA", county = county_codes) + +# Map palettes ---- +pal_inc <- carto_pal(7, "Geyser") +# "#008080" "#70A494" "#B4C8A8" "#F6EDBD" "#EDBB8A" "#DE8A5A" "#CA562C" + +pal_ssw <- carto_pal(7, "RedOr") +# "#F6D2A9" "#F5B78E" "#F19C7C" "#EA8171" "#DD686C" "#CA5268" "#B13F64" +# pal_ssw <- c("#F6D2A9", "#F5B78E", "#F19C7C", "#EA8171", "#DD686C") + +# Palettes ---- +pal_five <- c("#DE8A5A", "#EDBB8A", "#F6EDBD","#B4C8A8", "#70A494") +pal_six <- c("#CA562C", "#DE8A5A", "#EDBB8A", "#F6EDBD","#B4C8A8", "#70A494") +orange_dot <- "#CA562C" +green_dot <- "#B4C8A8" +grey_dot <- "#b2b8be" +blue_dot <- "#3B8EA5" + +# geography +geography_label <- "Thomas Jefferson Planning District" +# citations +acs_pums <- "Data Source: ACS Public Use Microdata Sample (PUMS), 2018-2022; U.S. Census Bureau." + +# Pull in data ---- +# County self sufficiency tables ---- +selfsuff_county <- read_csv("../data/self_suff_county_2021.csv") + +selfsuff_mean_monthly <- selfsuff_county %>% + select(county, ends_with("_mean")) %>% + select(-c(emergency_savings_mean, hourly_self_sufficiency_wage_mean, annual_self_sufficiency_wage_mean)) %>% + rename(self_sufficiency_wage_mean = monthly_self_sufficiency_wage_mean) %>% + pivot_longer(housing_costs_mean:self_sufficiency_wage_mean, values_to = "Monthly") + +selfsuff_mean_annual <- selfsuff_county %>% + select(county, ends_with("_mean")) %>% + relocate(annual_self_sufficiency_wage_mean, .after = last_col()) %>% + select(-c(emergency_savings_mean, hourly_self_sufficiency_wage_mean, monthly_self_sufficiency_wage_mean)) %>% + mutate(across(housing_costs_mean:child_tax_credit_mean, function(x) x*12)) %>% + rename(self_sufficiency_wage_mean = annual_self_sufficiency_wage_mean) %>% + pivot_longer(housing_costs_mean:self_sufficiency_wage_mean, values_to = "Annual") + +# Join tables +selfsuff_table <- selfsuff_mean_monthly %>% + left_join(selfsuff_mean_annual) %>% + mutate(name = str_remove(name, "_mean")) %>% + mutate(name = str_to_title(str_replace_all(name, "_", " ")), + county = str_to_title(county)) + +ssw_table_title <- "Average Expenses and Self-Sufficiency Wages for Families in " + +# Families with income below 35k, between 35k-self sufficiency wage & above ssw ---- +fam_ssw <- read_csv("../data/faminc_ssw_race_county_2022.csv") + +fam_ssw_dat <- fam_ssw %>% + select(-c(estimate,moe)) %>% + pivot_wider(names_from = ssw_group, values_from = percent) %>% + pivot_longer(above_ssw:below_thirtyfive) %>% + mutate(total_group_round = round(total_families, -1), + number_round = round(total_group_round*(value/100), -1), + number = round(total_families*(value/100), 0), + percent_round = round(number_round/total_group_round *100, 0), + group = factor(group, + levels = c("Black", "Hispanic", "White, Not Hispanic", "All Families"), + labels = c("Black Families", "Hispanic Families", "White Families", "All Families")), + name = factor(name, + levels = c("above_ssw", "below_ssw", "below_thirtyfive"), + labels = c("Income above Self-Sufficiency", "Income below Self-Sufficiency & above $35K", "Income below $35K")), + text = case_when(percent_round >= 20 ~ paste0(round(percent_round, 0), "%\n(", prettyNum(number_round, big.mark=",", preserve.width="none"), ")"), + percent_round < 20 & percent_round >= 1 ~ paste0(round(percent_round, 0), "% (", prettyNum(number_round, big.mark=",", preserve.width="none"), ")"), + percent_round < 1 ~ ""), + locality = str_to_title(str_remove(locality, ", Virginia")), + locality_label = paste0(str_to_title(str_remove(locality, ", Virginia")), " (Annual Self-Sufficiency Standard: ", str_remove(self_suff_wage, "~"), ")")) + +fam_ssw_dat <- fam_ssw_dat[order(fam_ssw_dat$name),] + +fam_ssw_pal <- c("#B4C8A8", "#DE8A5A", "#CA562C") +fam_ssw_title <- "Families Earning Below and Above the Self-Sufficiency Standard" + +# Total Families and Total Below SSW by county ---- +fam_ssw_totals <- fam_ssw_dat %>% + filter(str_detect(name, "Income below")) %>% + group_by(locality, group) %>% + summarise(total_families = first(total_families), + below_ssw_num = sum(number), + below_ssw_per = sum(round(value))) %>% + ungroup() %>% + mutate(total_fam_round = round(total_families, -1), + below_ssw_round = round(below_ssw_num, -1), + below_per_round = round(below_ssw_round/total_fam_round *100, 0) ) + + +# Income distribution by race/ethnicity by county ---- +faminc_race <- read_csv("../data/faminc_race_county_2022.csv") + +faminc_race <- faminc_race %>% + filter(inc_band != "Total Families") %>% + mutate(inc_band_group = case_when(str_detect(variable, "_002|_003|_004|_005|_006|_007") ~ "Earning below $35K", + str_detect(variable, "_008|_009|_010|_011") ~ "Earning $35K-$59.9K", + str_detect(variable, "_012|_013") ~ "Earning $60K-$100K", + str_detect(variable, "_014|_015|_016|_017") ~ "Earning above $100K"), + inc_rank = case_when(str_detect(variable, "_002|_003|_004|_005|_006|_007") ~ 1, + str_detect(variable, "_008|_009|_010|_011") ~ 2, + str_detect(variable, "_012|_013") ~ 3, + str_detect(variable, "_014|_015|_016|_017") ~ 4)) + +faminc_data <- faminc_race %>% + group_by(GEOID, locality, year, group, inc_band_group, inc_rank) %>% + summarise(estimate = sum(estimate), + moe = moe_sum(moe = moe, estimate = estimate), + total_families = first(total_families)) %>% + ungroup() %>% + mutate(percent = estimate/total_families *100, + group = factor(group, + levels = c("Black", "Hispanic", "White, Not Hispanic", "All Families"), + labels = c("Black Families", "Hispanic Families", "White Families", "All Families")), + inc_band_group = factor(inc_band_group, + levels = c("Earning above $100K", "Earning $60K-$100K", "Earning $35K-$59.9K", "Earning below $35K")), + text = case_when(percent >= 1 ~ paste0(round(percent, 0), "%\n(", prettyNum(estimate, big.mark=",", preserve.width="none"), ")"), + percent < 1 ~ ""), + locality_label = str_to_title(str_remove(locality, ", Virginia"))) + +faminc_pal <- c("#E4EAF1", "#B4C8A8", "#DE8A5A", "#CA562C") +faminc_title <- "Distribution of Family Income" + +# Median family income by county ---- +med_faminc_county <- read_csv("../data/med_faminc_county_2022.csv") %>% + mutate(GEOID = as.character(GEOID), + estimate = round(estimate, 0), + locality = str_to_title(str_remove(locality, ", Virginia"))) + +# Median family income by tract ---- +med_faminc_tract <- read_csv("../data/med_faminc_tract_2022.csv") %>% + mutate(GEOID = as.character(GEOID), + estimate = round(estimate, -2), + locality = str_to_title(locality)) + +med_faminc_tract <- med_faminc_tract %>% + left_join(tract_geo, by = "GEOID") %>% + st_as_sf() + +min_inc <- min(med_faminc_tract$estimate, na.rm = TRUE) +max_inc <- max(med_faminc_tract$estimate, na.rm = TRUE) + +# Below Self Sufficiency Standard, by tract ---- +ssw_tract <- read_csv("../data/faminc_ssw_tract_2022.csv") %>% + filter(ssw_group == "below") %>% + mutate(GEOID = as.character(GEOID), + percent = round(percent,0), + locality = str_to_title(locality)) + +ssw_tract <- ssw_tract %>% + left_join(tract_geo, by = "GEOID") %>% + st_as_sf() + +min_ssw <- min(ssw_tract$percent, na.rm = TRUE) +max_ssw <- max(ssw_tract$percent, na.rm = TRUE) + +# Sources ---- +source_acs <- "Data Source: U.S. Census Bureau, American Community Survey 5-year estimates, 2018-2022" +uw_sss_source <- "Data Source: The Self-Sufficiency Standard for Virginia, 2021; The Center for Women’s Welfare, University of Washington" + +``` + +## Executive Summary + +In the larger Charlottesville region, 14,990 families (22%) do not make enough money to meet their basic needs—housing, child care, food, transportation, health care, miscellaneous expenses (clothing, telephone, household items), and taxes. Rising costs and inflation along with stagnant wages and undervalued labor has made it increasingly difficult for families to be self-sufficient. + +To keep up with the rise in the cost of necessities, Orange Dot 6.0 has recalibrated how it determines the annual income required for families to meet their basic needs, using the Self-Sufficiency Standard. The Self-Sufficiency Standard is a project of the Center for Women’s Welfare at the University of Washington’s School of Social Work that defines the real cost of living for working families. + +The Self-Sufficiency Standard varies by locality and family size. For the City of Charlottesville, and Albemarle, Fluvanna, Greene, and Nelson counties, the Self-Sufficiency Standard for an average family is an annual income of around $60,000. For Louisa, the annual family income to meet basic needs is roughly $50,000, and for Buckingham, this value is around $45,000. A detailed breakdown of these costs and wages are provided in this report. + +While families facing economic insecurity live throughout our region, the likelihood that a family is struggling varies by race and by place. The struggle is not equally shared. + +47% of Black families and 35% of Hispanic families do not earn enough to meet their basic needs, compared to 18% of white families. This reflects a persistent gap resulting from past and ongoing policies that suppress investment, opportunity, and wealth creation in minoritized communities. + +The percent of families struggling overall is highest in the City of Charlottesville at 27% and in Buckingham County, at 26%, and lowest in Albemarle County, at 18%. + +Every locality in our region has areas where over a quarter (25%) of families have less than family-sufficient incomes. The areas with the highest percent of struggling families are in the City of Charlottesville, where the highest is 65%, and in Albemarle County, where despite having the lowest percent overall, has areas where nearly half the families struggle to meet their basic needs. + +For a comparison with past reports, there are an estimated 7,330 families (11%) earning below $35,000 in the region. The Orange Dot Report 5.0, published in 2022, found 9,413 families (14%) in this same income range. As the population of the region has grown, the number of families earning under $35k has decreased. So we’ve made some progress as a community toward more economic mobility, but not nearly enough. The cost of living has steadily risen, making the $35,000 threshold less representative of the income required to meet the basic needs of working families. + +As noted, our community has seen progress since this work began in 2011, but there are still too many struggling families. For a region as prosperous as ours, we have the means to build programs and enact policy that helps more families become self-sufficient. + +## Preface + +The first Orange Dot Report was released in 2011, and it served both to describe the local income deficit—the gap between what families earn as income and what they need to be self-sufficient—and to develop strategies for creating pathways to self-sufficiency for families in the region. This initial effort launched the innovative Network2Work framework pioneered at Piedmont Virginia Community College, a process that brings together a Job-Seeker Network, an Employer Network, and a Provider Network to match job-seekers to family-sustaining jobs and careers and to connect them to community resources using neighborhood-based volunteers. + +As Network2Work has grown, the Orange Dot Report has evolved and expanded, serving as a central resource and important update on the progress of the community. Initially focused on Charlottesville and Albemarle County in Orange Dot Report 2.0 (2015), the report encompassed the entire region (Albemarle, Buckingham, Charlottesville, Fluvanna, Greene, Louisa, and Nelson) in Orange Dot Report 3.0 (2018), Orange Dot Report 4.0 (2021), and Orange Dot Report 5.0 (2022).^[To find previous versions of the Orange Dot report, go to https://www.pvcc.edu/community-business/network2work/history-network2workpvcc-program] Orange Dot Report 6.0 continues this evolution, incorporating new analysis and building on updated self-sufficiency standards. This report marks the second update completed in partnership between Network2Work@PVCC and The Equity Center at the University of Virginia. The collaboration and resulting analysis represent the continuation of our collective work toward a more equitable and fully thriving region. + +## Introduction + +>“When someone works for less pay than she can live on — when, for example, she goes hungry so that you can eat more cheaply and conveniently — then she has made a great sacrifice for you, she has made you a gift of some part of her abilities, her health, and her life. The ‘working poor,’ as they are approvingly termed, are in fact the major philanthropists of our society.” - Barbara Ehrenreich, “Nickel and Dimed: On (Not) Getting By in America” (2001) + +Recent years have brought our country’s and our community’s ongoing struggles and inequities into stark relief. The housing affordability crisis, inflation and the rising costs of groceries, and the frequency and volatility of climate events have created challenges for all of us. But low-income individuals, especially individuals of color, are suffering disproportionately, both physically and financially. + +Despite working hard, too many families struggle to make ends meet, in part because their labor is not valued, and we accept their sacrifice. Many people laboring in positions considered essential to our community do not earn enough to provide for their families. For example, the so-called “caring economy”—childcare workers, home health aides, teachers—provides enormous social value, but is not valued by the market. Changes in the labor market that have increased the number of underemployed part-time workers—those who want more hours or full-time work—add further strain.^[Lonnie Golden and Jaeseung Kim. 2020. The Involuntary Part-time Work and Underemployment Problem in the U.S. The Center for Law and Social Policy.] + +We all seek security and stability: to provide for ourselves and our families, to see our children thrive, to create community with others, to live with dignity. For families experiencing economic insecurity, all of this is jeopardized. When faced daily with financial struggles—to pay for housing, to repair the car that carries you to work, to access needed healthcare, to find and afford a safe environment for your children—it is difficult to be the parent you want to be, the worker you know you could be, or the person you were meant to be. We all deserve a chance to succeed and flourish, but we are not all yet given equal access to that chance. Toward that end, we must seek to build an equitable economy, one intentionally constructed to fulfill America’s promise of opportunity for all. + +Our whole community benefits when the families have access to jobs that pay sufficient incomes. The many collective advantages include: + +**Children do better.** Graduating from college continues to be the fastest route to economic security, yet economic insecurity limits access to higher education. As Robert Putnam’s work shows, “a family’s socioeconomic status [has] become even more important than test scores in predicting which eighth graders would graduate from college. High-scoring poor kids are now slightly less likely (29%) to get a college degree than low-scoring rich kids (30%).”^[Putnam, R. (2015). Our Kids: The American Dream in Crisis. New York, NY: Simon & Schuster, 189-190.] + +**Local businesses prosper.** Employees are also consumers, and increased income among a region’s workers means more spending power, which is better for the economy, especially the local economy. + +**Taxpayers bear fewer costs.** Given the chance, families want to provide for themselves. When they are able to do so, they require less support from others. + +**People live longer.** According to the Centers for Disease Control, the biggest contributor to poor health is low socio-economic status. The Health Inequality Project estimates that a woman in the Charlottesville area in the lowest income quartile has a life expectancy of seven years less than a woman from the highest income quartile; among men in our region, the life expectancy gap is nearly ten years.^[Chetty R., Stepner M., Abraham S., Lin S., Scuderi B., Turner N., Bergeron A., and Cutler D., (2016). The Association Between Income and Life Expectancy in the United States, 2001-2014. JAMA 315:1750–1766. doi:10.1001/jama.2016.4226. Data: https://healthinequality.org/data/] + +**The community thrives.** A community thrives when its residents thrive. Residents thrive when their capacity as human beings is unleashed. And their capacity as human beings can only be unleashed when their basic needs are met. + +Knowing that we can only solve issues we can understand, we provide a snapshot of the families in our community who are struggling. What we have learned since this work began in 2011 is that there are too many struggling families in our community, but not too many to help. + + +## Defining Self-Sufficiency + +The goal of the Orange Dot Report is to provide an overview of the families in our region that struggle to afford the basic necessities. To determine what annual income is required for a family in our region to be considered self-sufficient, this year’s report uses the Self-Sufficiency Standard, a project of the Center for Women’s Welfare at the University of Washington’s School of Social Work.^[For more on the Self-Sufficiency Standard project: https://selfsufficiencystandard.org/] + +The Self-Sufficiency Standard defines the income working families need to meet their basic necessities without public or private assistance. Basic minimum needs include: housing, child care, food, transportation, health care, miscellaneous expenses (clothing, telephone, household items), as well as the cost of taxes and the impact of tax credits. These expenses are calculated for each US county, taking into account family composition, ages of children, and geographic differences in costs. The values used in this report are specific to the cost of living in our region.^[Virginia data used in this report is available here: https://selfsufficiencystandard.org/Virginia/] + +The Standard has been used across the country by government entities, advocates, and service providers. Using this resource in the Orange Dot Report provides a reliable and well-researched measure for determining which families in our community struggle to meet their basic needs. The methods used by the Self-Sufficiency Standard are comparable to methods used in past Orange Dot Reports but include additional categories.^[Methodology for the Self-Sufficiency Standard: https://selfsufficiencystandard.org/the-standard/methodology/] + +The Self-Sufficiency Standard provides a breakdown of the real cost of all basic needs for over 700 different family compositions for each locality. Family compositions are described by the number of adults, infants, preschoolers, school age children, and teenagers in a family. For each locality in the greater Charlottesville area, we have provided a detailed table of the average costs, and the annual wage required to meet self-sufficiency based on the most common family compositions in this region. For tables of expenses and self-sufficient wages for specific family compositions (i.e. one adult, one infant and one school age child), please see the Appendix of this report. + +```{r region_summary} +# All families in region +all_fam_region <- fam_ssw_totals %>% + filter(group == "All Families") %>% + group_by(group) %>% + summarise(total_families = sum(total_families), + below_ssw_num = sum(below_ssw_num), + total_fam_round = sum(total_fam_round), + below_ssw_round = sum(below_ssw_round)) %>% + ungroup() %>% + mutate(below_ssw_per = round(below_ssw_num/total_families *100, 0), + below_per_round = round(below_ssw_round/total_fam_round *100, 0), + locality = "Total for Region") %>% + select(locality, group, total_families, below_ssw_num, below_ssw_per, total_fam_round, below_ssw_round, below_per_round) + +below_ssw_all_region <- prettyNum(all_fam_region$below_ssw_round, big.mark=",", preserve.width="none") +below_ssw_per_all_region <- all_fam_region$below_per_round +total_fam_all_region <- prettyNum(all_fam_region$total_fam_round, big.mark=",", preserve.width="none") + +# Black families in region +black_fam_region <- fam_ssw_totals %>% + filter(group == "Black Families") %>% + group_by(group) %>% + summarise(total_fam_round = sum(total_fam_round), + below_ssw_round = sum(below_ssw_round)) %>% + ungroup() %>% + mutate(below_per_round = round(below_ssw_round/total_fam_round *100, 0) ) + +below_ssw_black_region <- prettyNum(black_fam_region$below_ssw_round, big.mark=",", preserve.width="none") +below_ssw_per_black_region <- black_fam_region$below_per_round + +# Hispanic families in region +his_fam_region <- fam_ssw_totals %>% + filter(group == "Hispanic Families") %>% + group_by(group) %>% + summarise(total_fam_round = sum(total_fam_round), + below_ssw_round = sum(below_ssw_round)) %>% + ungroup() %>% + mutate(below_per_round = round(below_ssw_round/total_fam_round *100, 0) ) + +below_ssw_his_region <- prettyNum(his_fam_region$below_ssw_round, big.mark=",", preserve.width="none") +below_ssw_per_his_region <- his_fam_region$below_per_round + +# White families in region +white_fam_region <- fam_ssw_totals %>% + filter(group == "White Families") %>% + group_by(group) %>% + summarise(total_fam_round = sum(total_fam_round), + below_ssw_round = sum(below_ssw_round)) %>% + ungroup() %>% + mutate(below_per_round = round(below_ssw_round/total_fam_round *100, 0) ) + +below_ssw_white_region <- prettyNum(white_fam_region$below_ssw_round, big.mark=",", preserve.width="none") +below_ssw_per_white_region <- white_fam_region$below_per_round + +# Summary table for counties +all_fam_region_table <- fam_ssw_totals %>% + filter(group == "All Families") + +all_fam_region_table <- rbind(all_fam_region_table, all_fam_region) + +# Creating comparison values from previous Orange Dot reports +faminc_below35k <- faminc_race %>% + filter(inc_band_group == "Earning below $35K") + +# All families under 35K +faminc_below35k_all <- faminc_below35k %>% + filter(group == "All Families") %>% + group_by(locality) %>% + summarise(total_families = first(total_families), + estimate = sum(estimate)) %>% + ungroup() %>% + summarise(total_families = sum(total_families), + estimate = sum(estimate)) %>% + mutate(total_fam_round = round(total_families, -1), + estimate_round = round(estimate, -1), + estimate_per = round(estimate/total_families *100, 0), + estimate_per_round = round(estimate_round/total_fam_round *100, 0), + locality = "Total for Region", + inc_band_group = "Earning below $35K") + +``` + +## Families Struggling in Our Region + +There are `r total_fam_all_region` families living in the Charlottesville region, defined in this report as the City of Charlottesville and the surrounding counties of Albemarle, Buckingham, Fluvanna, Greene, Louisa, and Nelson.^[Family is defined as two or more people related by birth, marriage, or adoption and living in the same household.] Of these, `r below_ssw_all_region` families (`r paste0(below_ssw_per_all_region,"%")`) do not earn enough to provide for their family's basic needs. + +The table below shows the estimated number of struggling families in each locality and the corresponding percent. The percent of families struggling overall is highest in the City of Charlottesville at 27% and in Buckingham County, at 26%, and lowest in Albemarle County, at 18%. Localities in our region vary in population, so that even though Albemarle has the lowest percent, it has the highest number of families struggling to meet their basic minimum needs, at over 5,000. + + +```{r region_table} +# Region self sufficiency totals table ---- + +all_fam_region_table %>% + mutate(below_per_round = below_per_round/100) %>% + ungroup() %>% + select(-c(group, total_families, below_ssw_num, below_ssw_per, total_fam_round)) %>% + gt(rowname_col = "locality") %>% + cols_label( + below_ssw_round = "Number of Struggling Families", + below_per_round = "Percent of Struggling Families" + ) %>% + fmt_number(columns = below_ssw_round, + decimals = 0, + sep_mark = ",") %>% + fmt_percent( + columns = below_per_round, + decimals = 0 + ) %>% + tab_style( + style = list( + cell_fill(color = "#F6D2A9"), + cell_text(weight = "bold") + ), + locations = list(cells_body(rows = 8), cells_stub(rows = 8)) + ) %>% + tab_style( + style = cell_text(align = "center", v_align = "middle"), + locations = list(cells_column_labels(), cells_body()) + ) %>% + tab_style( + style = cell_text(weight = "bold"), + locations = list(cells_column_labels()) + ) %>% + tab_header( + title = "Summary of Struggling Families in the Region" + ) %>% + tab_source_note( + source_note = "Note: Values are approximate based on the U.S. Census Bureau, American Community Survey 5-year estimates (2018-2022)" + ) + +``` + +Working families in our community need to earn an annual income that meets the Self-Sufficiency Standard to meet the real cost of living in our region. The Self-Sufficiency Standard varies by locality. Housing is less expensive in Buckingham and Louisa. Childcare is more expensive in Albemarle and Charlottesville. + +The above table shows the estimated number of struggling families that do not make an annual income that meets self-sufficiency as defined by the Self-Sufficiency Standard for each specific locality. For the City of Charlottesville, and Albemarle, Fluvanna, Greene, and Nelson counties, this is an annual income of around $60,000 for an average family. For Louisa, the annual family income to meet basic needs is roughly $50,000, and for Buckingham, this value is around $45,000. A detailed breakdown of these costs and wages are provided in the Locality Profiles in this report. + +### Undervalued Labor + +A majority (62%) of workers in struggling families are working at least 40 hours per week—the equivalent of a full-time job, as shown in the figure below. This deeper understanding about people in the workforce who are in families earning below the Self-Sufficiency Standard is drawn from the ACS Public Use Microdata Sample provided by the U.S. Census Bureau for the Thomas Jefferson Planning District.^[The Thomas Jefferson Planning District includes City of Charlottesville, and Albemarle, Fluvanna, Greene, Louisa, and Nelson counties. Buckingham County is not included in the microdata sample.] + +Those working fewer than full-time weekly hours can be a sign that workers are in jobs with lower wages, few to no health or retirement benefits, and less scheduling stability—and want less vulnerable, full-time jobs. Race and gender can define who has a higher chance of having an unstable job, with black women bearing the weight of vulnerable work.^[See: https://www.urban.org/data-tools/black-women-precarious-gig-work?&utm_source=urban_ea&utm_campaign=unstable_work_black_women&utm_id=workforce&utm_content=general&engaged&utm_term=workforce ; https://www.urban.org/sites/default/files/2023-09/Job-quality-and-race-and-gender-equity.pdf] + +```{r workers_by_hours, fig.width = 9.5, fig.height = 6, fig.retina = 2} +workers_by_hours <- read_csv("../microdata/data/workers_by_hours.csv") %>% + mutate( + hours_bin = factor(hours_bin, levels = c("Unemployed", "Less than 20", "20 to 29", "30 to 34", "35 to 39", "40 or more"), labels = c("Unemployed", "Less than 20 hours", "20 to 29 hours", "30 to 34 hours", "35 to 39 hours", "40 or more hours")), + label_text = case_when( + below_ess_finc == "Yes" ~ paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "%)"), + below_ess_finc == "No" ~ paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "%)")), + below_ess_finc = factor(below_ess_finc, levels = c("Yes", "No"), + labels = c("Income Below Self-Sufficiency Standard", "Income Above Self-Sufficiency Standard"))) + +workers_by_hours %>% + filter(below_ess_finc == "Income Below Self-Sufficiency Standard") %>% + ggplot(aes(x = count, y = hours_bin)) + + geom_bar(stat = "identity", fill = blue_dot) + + geom_text(aes(label = label_text), + vjust = 0.5, + hjust = -0.1, + size = 5) + + scale_y_discrete(name = "") + + scale_x_continuous(name = "Number of Workers", + breaks = seq(0, 12000, by = 2500), + label=comma, + expand = expansion(mult = c(0, .2))) + + labs(title = "Weekly Hours Worked for Workers Earning Below the Self-Sufficiency Standard", + subtitle = geography_label, + caption = acs_pums) + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "top", + legend.text = element_text(size = 12), + # legend.location = "plot", + legend.justification="center", + # panel.grid.major.y = element_blank(), + axis.ticks = element_blank(), + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.y = element_text(color = "black", size = 14), + text = element_text(size = 14), + axis.text.x = element_text(size=14), + plot.title = element_text(size = 18), + plot.caption = element_text(size = 12)) + +``` + + +We can also identify different categories of struggling families—those who are closer to self-sufficiency and who can more readily earn more with the right opportunities, and those whose earning potential is more limited—and different strategies are required to improve the lives of families within each. + + +```{r family_income, fig.width = 10, fig.height = 6, fig.retina = 2} + +family_income <- read_csv("../microdata/data/families_below_ess_by_incomes.csv") + +family_income %>% + ggplot(aes(x = count, y = income_bins, fill = income_bins)) + + geom_bar(stat = "identity") + + geom_text(aes(label = paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "%)")), + vjust = 0.5, + hjust = -0.1, + size = 5) + + scale_y_discrete(name = "") + + scale_x_continuous(name = "Number of Families", + breaks = seq(0, 4000, by = 1000), + label=comma, + expand = expansion(mult = c(0, .19)) + ) + + scale_fill_manual(values = c("#EDBB8A", "#EDBB8A","#DE8A5A", "#DE8A5A", "#DE8A5A", "#B4C8A8"))+ + labs(title = "Annual Incomes for Families Earning Below the Self-Sufficiency Standard", + subtitle = geography_label, + caption = acs_pums) + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "none", + # legend.location = "plot", + legend.justification="center", + legend.text = element_text(size = 12), + # panel.grid.major.y = element_blank(), + axis.ticks = element_blank(), + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.y = element_text(color = "black", size = 14), + text = element_text(size = 14), + axis.text.x = element_text(size=14), + plot.title = element_text(size = 18), + plot.caption = element_text(size = 12)) +``` + +Families in our region generally need to earn between $50,000 and $60,000 annually to meet their basic needs. While some of the struggling families in our community appear to have limited earning capacity (those with incomes under $20,000), most are working and earning income ($20,000-$49,999), just not enough to support their families. These are the families who are closer to self-sufficiency and who can more readily earn more with the right opportunities. + +Some families are on fixed incomes or have otherwise reached a more constrained earning potential due to illness, disability, caregiving responsibilities, and other circumstances. These families are unlikely to see their incomes increase appreciably and require sustained subsidy to meet their basic needs. Their survival depends on the strength of the social safety net. But the vast majority of families, however, have the capacity to earn a family-sufficient income. + +For most families, low-incomeness is not a constant, not an immutable condition that must be worked around, but a variable that must be changed. For a family experiencing economic struggle, the first question should be: What do they need to increase their income? + +Most workers in struggling families are in low-waged employment. The figure below sorts occupations into those groups based on the median wages typically earned in the Charlottesville metro region based on the Bureau of Labor Statistics Occupational Employment and Wage statistics.^[https://www.bls.gov/oes/tables.htm] A large portion (42%) of workers in struggling families are in the lowest paid occupations, those typically earning between $25,610 and $37,760 a year – making it difficult to impossible to meet the Self-Sufficiency Standard for single or two-parent households. + + +```{r workers_by_medianwages, fig.width = 10, fig.height = 6, fig.retina = 2} +workers_by_medianwages <- read_csv("../microdata/data/workers_by_medianwages.csv") %>% + mutate( + median_wage_bin_label = factor(median_wage_bin_label, levels = c("25610-37760", "37860-48320", "48340-60600", "60640-86950", "88050-238990"), labels = c("$25,610 - $37,760", "$37,860 - $48,320", "$48,340 - $60,600", "$60,640 - $86,950", "$88,050 - $238,990")), + label_text = case_when( + below_ess_finc == "Yes" ~ paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "%)"), + below_ess_finc == "No" ~ paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "%)")), + below_ess_finc = factor(below_ess_finc, levels = c("Yes", "No"), + labels = c("Income Below Self-Sufficiency Standard", "Income Above Self-Sufficiency Standard"))) + +workers_by_medianwages %>% + filter(below_ess_finc == "Income Below Self-Sufficiency Standard") %>% + ggplot(aes(x = count, y = median_wage_bin_label, fill = median_wage_bin_label)) + + geom_bar(stat = "identity") + + geom_text(aes(label = label_text), + vjust = 0.5, + hjust = -0.1, + size = 5) + + scale_y_discrete(name = "") + + scale_x_continuous(name = "Number of Workers", + breaks = seq(0, 12000, by = 1500), + label=comma, + expand = expansion(mult = c(0, .19))) + + scale_fill_manual(values = c("#DE8A5A", "#EDBB8A", "#F6EDBD","#B4C8A8", "#70A494"))+ + labs(title = "Annual Median Wage for Workers Earning Below the Self-Sufficiency Standard", + subtitle = geography_label, + caption = "Bureau of Labor Statistics, U.S. Department of Labor. Occupational Employment and Wage Statistics, 2023.") + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "none", + # legend.location = "plot", + legend.justification="center", + legend.text = element_text(size = 12), + # panel.grid.major.y = element_blank(), + axis.ticks = element_blank(), + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.y = element_text(color = "black", size = 14), + text = element_text(size = 14), + axis.text.x = element_text(size=14), + plot.title = element_text(size = 18), + plot.caption = element_text(size = 12)) + +``` + +The myth of American meritocracy promotes the idea that those who work hard and play by the rules will get ahead. The flipside of that myth—if you haven’t gotten ahead, it must be because you don’t work hard enough or play by the rules—leads to negative beliefs about the poor in our society and, subsequently, to reduced support for resources and programs meant to reduce the burdens of poverty. Working hard, however, does not guarantee that individuals will get ahead. Take the formulas below: + +**Hard Work × High Wages = High Income** +**Hard Work × Low Wages = Low Income** + +The difference between these outcomes is not the hard work individuals put in, but the wages paid out. A full-time worker making Virginia’s minimum wage will have a gross income of $24,000 per year.^[Based on the 2024 minimum wage of $12/hour. In 2025, the Virginia minimum wage will increase to $12.41.] To reduce the number of struggling families, therefore, requires an increase in their wages. We need a system that identifies low-income families who are working for a living but who are not valued and help them increase their value in the eyes of their employers. + +To get ahead, those workers will need jobs and careers that pay enough to support their families. They need job that do not require them to sacrifice for our benefit by working for less pay than they can live on. + +The table below provides information on the types of jobs and the corresponding wages that fall into different earning bands: + + +```{r occupations_by_wagebin, fig.width = 6, fig.height = 10, fig.retina = 2} +occupations_by_wagebin <- read_csv("../microdata/data/occupations_by_wagebin.csv") + +occupations_filtered <- occupations_by_wagebin %>% + filter(occupation %in% c("Fast Food and Counter Workers", "Cashiers", "Home Health and Personal Care Aides", "Childcare Workers", + "Customer Service Representatives", "Construction Laborers", "Maintenance and Repair Workers, General", + "Emergency Medical Technicians", "Nursing Assistants", + "Healthcare Support Workers, All Other", "Medical Assistants", + "Bus Drivers, Transit and Intercity", "Dental Assistants", "Bus Drivers, School", + "Automotive Service Technicians and Mechanics", "Heavy and Tractor-Trailer Truck Drivers", + "Carpenters", "Production, Planning, and Expediting Clerks", + "Graphic Designers", "Plumbers, Pipefitters, and Steamfitters", + "Electricians", "Medical Records Specialists", "Police and Sheriff's Patrol Officers", + "Clinical Laboratory Technologists and Technicians", "Elementary School Teachers, Except Special Education", + "Secondary School Teachers, Except Special and Career/Technical Education", + "Office and Administrative Support Workers, All Other", "Registered Nurses", + "Radiologic Technologists and Technicians", "Computer User Support Specialists", + "Accountants and Auditors", "Nurse Practitioners", + "General and Operations Managers", "Construction Managers", "Dental Hygienists", + "Heating, Air Conditioning, and Refrigeration Mechanics and Installers", + "Electrical and Electronic Engineering Technologists and Technicians", + "Licensed Practical and Licensed Vocational Nurses", "Surgical Technologists")) %>% + mutate(median_wage_bin_label = factor(median_wage_bin_label, levels = c("25610-37760", "37860-48320", "48340-60600", "60640-86950", "88050-238990"), labels = c("$25,610 - $37,760", "$37,860 - $48,320", "$48,340 - $60,600", "$60,640 - $86,950", "$88,050 - $238,990")), + job_group = case_when(soc_group_num == "11" ~ "Management", +soc_group_num == "13" ~ "Business and Financial Operations", +soc_group_num == "15" ~ "Computer and Mathematical", +soc_group_num == "17" ~ "Architecture and Engineering", +soc_group_num == "19" ~ "Life, Physical, and Social Science", +soc_group_num == "21" ~ "Community and Social Service", +soc_group_num == "23" ~ "Legal", +soc_group_num == "25" ~ "Educational Instruction and Library", +soc_group_num == "27" ~ "Arts, Design, Entertainment, Sports, and Media", +soc_group_num == "29" ~ "Healthcare Practitioners and Technical", +soc_group_num == "31" ~ "Healthcare Support", +soc_group_num == "33" ~ "Protective Service", +soc_group_num == "35" ~ "Food Preparation and Serving Related", +soc_group_num == "37" ~ "Building and Grounds Cleaning and Maintenance", +soc_group_num == "39" ~ "Personal Care and Service", +soc_group_num == "41" ~ "Sales and Related", +soc_group_num == "43" ~ "Office and Administrative Support", +soc_group_num == "45" ~ "Farming, Fishing, and Forestry", +soc_group_num == "47" ~ "Construction and Extraction", +soc_group_num == "49" ~ "Installation, Maintenance, and Repair", +soc_group_num == "51" ~ "Production", +soc_group_num == "53" ~ "Transportation and Material Moving" +)) + +occupations_filtered %>% + mutate(employment_per_1_000_jobs = employment_per_1_000_jobs/100, + color = "") %>% + select(c(occupation, annual_median_wage_2, color, employment_per_1_000_jobs, job_group, median_wage_bin)) %>% + gt() %>% + data_color( + columns = median_wage_bin, + target_columns = color, + direction = "column", + palette = c("#DE8A5A", "#EDBB8A", "#F6EDBD","#B4C8A8", "#70A494"), + ) %>% + fmt_currency( + columns = 2, + currency = currency( + html = "$", + default = "$" + ), + decimals = 2 + ) %>% + fmt_percent( + columns = employment_per_1_000_jobs, + decimals = 0 + ) %>% + cols_hide(columns = c(median_wage_bin)) %>% + cols_label( + occupation = "Occupation", + annual_median_wage_2 = "Annual Median Wage", + color = "", + employment_per_1_000_jobs = "Employment Rate", + median_wage_bin = "", + job_group = "Occupation Group" + ) %>% + tab_style( + style = cell_text(align = "center", v_align = "middle"), + locations = list(cells_column_labels(2:4), cells_body(2:4)) + ) %>% + tab_footnote( + footnote = "A full list of occupations and wages is available here: https://github.com/virginiaequitycenter/orange-dot/blob/main/OrangeDot6_files/microdata/data/occupation_wages.csv", + locations = cells_title(groups = "title") + ) %>% + tab_footnote( + footnote = "The annual median wage is the boundary between the highest and lowest paid workers in a given occupation. Half of the workers in a given occupation earn more than the median wage, and half the workers earn less than the median wage.", + locations = cells_column_labels(columns = annual_median_wage_2) + ) %>% + tab_footnote( + footnote = "Employment rate is the number of jobs (employment) in the given occupation per 1,000 jobs in the Charlottesville Metro Area", + locations = cells_column_labels(columns = employment_per_1_000_jobs) + ) %>% + tab_footnote( + footnote = "Major occupation groups defined by the Standard Occupational Classification (SOC) system, used by Federal statistical agencies to classify workers and jobs into occupational categories for the purpose of collecting, calculating, analyzing, or disseminating data.", + locations = cells_column_labels(columns = job_group) + ) %>% + tab_header( + title = "Selection of Occupations by Annual Median Wage Earned in the Charlottesville Metro Area" + ) %>% + tab_source_note( + source_note = "Data Source: U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics; May 2023" + ) +``` + +### The Intersection with Race and Ethnicity + +Too many families are struggling in our region, but these burdens are not equally shared. Wealth inequality is higher in the United States than in almost any other developed country.^[OECD (2021), "Inequalities in household wealth and financial insecurity of households", OECD Policy Insights on Well-being, Inclusion and Equal Opportunity, No. 2, OECD Publishing, Paris, https://doi.org/10.1787/b60226a0-en.] + +Racial wealth inequities reflect the long-standing effects of structural racism, not individual or group traits. Structural racism is defined by current and historic policies, programs, and institutional practices that make it easier for white families to accrue wealth compared to families of color, who face more barriers to wealth building. + +This has generated a significant racial and ethnic wealth gap in our country. The graph below, provided by the Urban Institute, shows that this differences in family wealth by race and ethnicity are large and have grown larger over the past four decades. + +```{r} +knitr::include_graphics("average-family-wealth-by-race-and-ethnicity-1963-2022.png") +``` + +From the Urban Institute: + +In 1983, the average wealth of white families was about $320,000 higher than the average wealth of Black families and Hispanic families. By 2022, white families’ average wealth ($1.4 million) was more than $1 million higher than that of Black families ($211,596) and Hispanic families ($227,544). Put another way, white families had six times the average wealth of Black families and Hispanic families.^[Urban Institute, "Nine Charts about Wealth Inequality in America." April 25, 2024. https://apps.urban.org/features/wealth-inequality-charts/] + +This racial and ethnic wealth gap is clearly visible in our region. In the Thomas Jefferson Planning District, 47% of Black families and 35% of Hispanic families earn below the Self-Sufficiency Standard, compared to 18% of white families. This is a difference of 29% and 17%, respectively. This means there are nearly three times as many Black families and two times as many Hispanic families not earning a real living wage compared to white families. + +The figure below provides another way to look at this gap in earnings in our community. It shows that among families not earning enough to be self-sufficient, nearly a quarter (23%) are Black. Compare this to families making above the Self-Sufficiency Standard, where only 6% are Black families. + +```{r race_by_percent, fig.width = 9.5, fig.height = 6, fig.retina = 2} +fam_by_race <- read_csv("../microdata/data/families_by_race.csv") + +fam_by_ess_totals <- fam_by_race %>% + group_by(below_ess_finc) %>% + summarise(sss_group_total = sum(count)) %>% + ungroup() + +fam_by_race_rounded<- fam_by_race %>% + left_join(fam_by_ess_totals) %>% + mutate(count_rounded = round(count, -2), + sss_group_tot_rounded = round(sss_group_total, -2), + percent_rounded = round(count_rounded/sss_group_tot_rounded *100, 0), + race_ethn = case_when(hhldr_race_ethn %in% c("Hispanic", "Black", "White") ~ hhldr_race_ethn, + .default = "All Other Groups"), + race_ethn = factor(race_ethn, levels = c("White", "Black", "Hispanic", "All Other Groups"), labels = c("White\nFamilies", "Black\nFamilies", "Hispanic\nFamilies", "All Other Groups")), + label_text = paste0(scales::percent(percent_rounded / 100, accuracy = 1), "\n(", + scales::comma(count_rounded), " families)"), + below_ess_finc = factor(below_ess_finc, levels = c("Yes", "No"), + labels = c("Income Below Self-Sufficiency Standard", "Income Above Self-Sufficiency Standard")) + ) + +fam_by_race_rounded %>% + filter(hhldr_race_ethn %in% c("White", "Black", "Hispanic")) %>% + ggplot(aes(x = percent, y = race_ethn, group = race_ethn, fill = below_ess_finc)) + + geom_bar(stat = "identity") + + geom_text(aes(label = label_text), + vjust = -0.35, + hjust = 0.5, + size = 4.5) + + scale_y_discrete(name = "") + + scale_x_continuous(name = "", + limits = c(0,100), + breaks = seq(0, 100, by = 25), + label= label_percent(scale = 1)) + + scale_fill_manual(values = c(orange_dot, green_dot)) + + coord_flip() + + facet_wrap(~ below_ess_finc, scales = "free") + + labs(title = "Race/Ethnicity of Families Earning Below and Above the Self-Sufficiency Standard", + subtitle = geography_label, + caption = paste0("Note: Not all groups are included here.\n", acs_pums)) + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "none", + # legend.location = "plot", + # legend.justification="center", + # legend.text = element_text(size = 13), + panel.grid.major.x = element_blank(), + axis.ticks = element_blank(), + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + strip.text = element_text(size = rel(1.15), + # face = "bold", + color = "black"), + # axis.text.y = element_text(color = "black", size = 14), + text = element_text(size = 14), + axis.text.x = element_text(size=14), + plot.title = element_text(size = 18), + plot.caption = element_text(size = 12)) +``` + +We need to be intentional about helping all families in our community who are struggling to achieve self-sufficient income but must be especially attentive to families of color who are struggling in our economy. We must consider new programs and policies through an equitable lens to ensure that solutions will benefit the families that need it most. + +### Additional Regional Measures + +In addition to differences in race and ethnicity, there are other characteristics of families in our community who have a higher risk of experiencing economic hardship. + +#### Age + +The detailed ACS Public Use Microdata for our region show disparities related to age for families earning below and above the Self-Sufficiency Standard. The figure below shows that a majority of the families who do not earn enough income to meet their basic needs are younger families, whose heads of household are ages 25 to 44 years, and older families, ages 65 years and older. Of the families earning below the Self-Sufficiency Standard, nearly a quarter (24%) are between the ages of 35 and 44 years. + +```{r age_butterfly_percent, fig.width = 10.5, fig.height=6, fig.retina = 2} +fam_by_age <- read_csv("../microdata/data/families_by_age.csv") %>% + left_join(fam_by_ess_totals) %>% + mutate(count_rounded = round(count, -2), + sss_group_tot_rounded = round(sss_group_total, -2), + percent_rounded = round(count_rounded/sss_group_tot_rounded *100, 0)) %>% + mutate(hhldrage_bin = factor(hhldrage_bin, levels = c("65 and over", "55 to 64", "45 to 54", "35 to 44", "25 to 34", "Under 25")), + below_ess_finc = factor(below_ess_finc, levels = c("Yes", "No"), + labels = c("Income Below Self-Sufficiency Standard", "Income Above Self-Sufficiency Standard"))) + +dummy_age_per = tibble(y = c(-50, 0, 0, 50), + below_ess_finc = c("Income Above Self-Sufficiency Standard", "Income Above Self-Sufficiency Standard", + "Income Below Self-Sufficiency Standard", "Income Below Self-Sufficiency Standard")) + +dat_ess_per <- fam_by_age %>% + group_by(percent_rounded, below_ess_finc) %>% + mutate(y = ifelse(below_ess_finc == "Income Above Self-Sufficiency Standard", -percent, percent), + label_text = case_when( + below_ess_finc == "Income Below Self-Sufficiency Standard" ~ paste0(percent_rounded, "%\n(", prettyNum(count_rounded, big.mark=",", preserve.width="none"), " families)"), + below_ess_finc == "Income Above Self-Sufficiency Standard" ~ paste0(percent_rounded, "%\n(", prettyNum(count_rounded, big.mark=",", preserve.width="none"), " families)"))) %>% + ungroup() + +ggplot() + + geom_bar(data = dat_ess_per, + mapping = aes(y = y, + x = hhldrage_bin, + fill = below_ess_finc), + stat = "identity", + width = 0.8) + + geom_blank(data = dummy_age_per, + mapping = aes(y = y)) + + geom_text(data = dat_ess_per, + mapping = aes(x = hhldrage_bin, + y = case_when(below_ess_finc == "Income Above Self-Sufficiency Standard" ~ y-1.2, + below_ess_finc == "Income Below Self-Sufficiency Standard" ~ y+1.2), + hjust = case_when(below_ess_finc == "Income Above Self-Sufficiency Standard" ~ 1, + below_ess_finc == "Income Below Self-Sufficiency Standard" ~ 0), + label = label_text), + size = 4.5 + ) + + scale_x_discrete(name = "") + + scale_y_continuous(expand = expansion(mult = c(0, 0)), + name = "Percent of Families") + + scale_fill_manual(values = c(orange_dot, green_dot)) + + facet_share(~ below_ess_finc, + dir = "h", + scales = "free", + reverse_num = TRUE) + + coord_flip(clip = "off") + + theme_light() + + labs(title = "Age of Householder for Families Earning Below and Above the Self-Sufficiency Standard", + subtitle = geography_label, + caption = acs_pums) + + theme(legend.position = "none", + panel.grid.minor.x = element_blank(), + panel.border = element_blank(), + strip.text = element_text(size = rel(1.15), + # face = "bold", + color = "black"), + strip.background = element_rect(fill = "white", colour = "black", size = 0), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.y = element_text(hjust = 0.5, color = "black", size = 14), + text = element_text(size = 14), + axis.title.x = element_text(size=13), + plot.title = element_text(size = 18), + plot.caption = element_text(size = 12)) + +``` + +#### Housing + +Of course, earning a living wage has a broad impact on the choices families make for their lives. Housing is a significant expense, and in our housing affordability crisis there can be limited options for those families who are not meeting self-sufficiency. + +Below, we show the difference in homeowners and renters for families with incomes below and above the Self-Sufficiency Standard: 41% of families who do not earn enough to meet their basic needs rent their home, compared to 16% of those earning above. Earning an income that goes beyond meeting basic needs opens up more opportunities for stability—a large majority (84%) of families earning above the Self-Sufficiency Standard are homeowners. + +```{r tenure-stacked, fig.width=9.5, fig.height=5, fig.retina = 2} +fam_by_tenure <- read_csv("../microdata/data/families_by_tenure.csv") %>% + mutate(label_text = case_when( + below_ess_finc == "No" ~ paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "% of families above SSS)"), + below_ess_finc == "Yes" ~ paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "% of families below SSS)")), + below_ess_finc = factor(below_ess_finc, levels = c("No", "Yes"), + labels = c("Income Above\nSelf-Sufficiency Standard", "Income Below\nSelf-Sufficiency Standard")), + own_rent = factor(own_rent, levels = c("Own", "Rent"), labels = c("Homeowners", "Renters"))) + +fam_by_tenure %>% + ggplot(aes(x = percent, y = below_ess_finc, group=below_ess_finc, fill = own_rent)) + + geom_bar(stat = "identity") + + geom_label_repel(aes(label = case_when( + own_rent == "Homeowners" ~ paste0(round(percent, 0), "% are Homeowners\n(", prettyNum(count, big.mark=",", preserve.width="none"), " families)"), + own_rent == "Renters" ~ paste0(round(percent, 0), "% are Renters\n(", prettyNum(count, big.mark=",", preserve.width="none"), " families)"))), + size = 4.5, fontface = "bold", show.legend = FALSE, + min.segment.length = Inf, + position = position_stack(vjust = 0.35), + vjust = 0.5, + hjust = -0.025, + box.padding = 0.01, + # force_pull = 100, + # direction = "x", + color = "white") + + scale_x_continuous(limits = c(0, 100), + labels = label_percent(scale = 1), + name = "Percent of Families", + sec.axis = dup_axis()) + + scale_y_discrete(name = "") + + scale_fill_manual(values = c(grey_dot, blue_dot)) + + labs(title = "Housing Status for Families Earning Below and Above the Self-Sufficiency Standard", + subtitle = geography_label, + caption = acs_pums) + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "top", + # legend.location = "plot", + legend.justification="center", + legend.text = element_text(size = 13), + panel.grid.major.y = element_blank(), + axis.ticks = element_blank(), + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.y = element_text(hjust = 0.5, color = "black", size = 14), + text = element_text(size = 14), + axis.title.x = element_text(size=12), + plot.title = element_text(size = 18), + plot.caption = element_text(size = 12)) +``` + +However, both homeownership and renting come with expenses that need to be matched by an income to comfortably support them. Housing burden describes the percentage of a household’s income that goes towards housing expenses. A family is considered burdened if 30% or more of their income goes towards these expenses, and severely burdened if housing expenses are over 50%. + +The figure below shows that over half (56%) of families earning less than the Self-Sufficiency Standard are housing burdened, with 32% of those families being severely burdened. On the other side, 93% of self-sufficient families are not housing burdened, making an income that adequately meets these needs. + +```{r burden, fig.width=9.5, fig.height=5, fig.retina = 2} +fam_by_burden <- read_csv("../microdata/data/families_by_burden.csv") %>% + mutate(label_text = case_when( + below_ess_finc == "No" ~ paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "% of families above SSS)"), + below_ess_finc == "Yes" ~ paste0(prettyNum(count, big.mark=",", preserve.width="none"), " (", round(percent, 0), "% of families below SSS)")), + below_ess_finc = factor(below_ess_finc, levels = c("No", "Yes"), + labels = c("Income Above\nSelf-Sufficiency Standard", "Income Below\nSelf-Sufficiency Standard"))) + +fam_by_burden %>% + ggplot(aes(x = percent, y = below_ess_finc, group=below_ess_finc, fill = factor(shelter_burden, levels = c("Not Burdened", "Burdened", "Severely Burdened"), labels = c("Not Burdened\nLess than 30% household income", "Burdened\n30% to 49% household income", "Severely Burdened\nOver 50% household income")))) + + geom_bar(stat = "identity") + + # geom_text(aes(label = case_when( + # shelter_burden == "Not Burdened" ~ paste0(round(percent, 0), "% are Not Burdened\n(", prettyNum(count, big.mark=",", preserve.width="none"), " families)"), + # shelter_burden == "Burdened" ~ paste0(round(percent, 0), "% are Burdened\n(", prettyNum(count, big.mark=",", preserve.width="none"), " families)"), + # shelter_burden == "Severely Burdened" ~ paste0(round(percent, 0), "% are Severely Burdened\n(", prettyNum(count, big.mark=",", preserve.width="none"), " families)"))), + # position = position_stack(vjust = 0.5), + # vjust = 0.5, + # # hjust = -0.025, + # size = 3) + + geom_label_repel(aes(label = case_when( + shelter_burden == "Not Burdened" ~ paste0(round(percent, 0), "% Not Burdened\n(", prettyNum(count, big.mark=",", preserve.width="none"), " families)"), + shelter_burden == "Burdened" ~ paste0(round(percent, 0), "% Burdened\n(", prettyNum(count, big.mark=",", preserve.width="none"), " families)"), + shelter_burden == "Severely Burdened" ~ paste0(round(percent, 0), "% Severely Burdened\n(", prettyNum(count, big.mark=",", preserve.width="none"), " families)"))), + size = 4, fontface = "bold", show.legend = FALSE, + min.segment.length = Inf, + position = position_stack(vjust = 0.25), + # vjust = 0.5, + hjust = -0.025, + box.padding = 0.01, + # force_pull = 100, + # direction = "x", + color = "white", + seed = 123) + + scale_x_continuous(limits = c(0, 100), + labels = label_percent(scale = 1), + name = "Percent of Families", + sec.axis = dup_axis(), + expand = expansion(mult = c(0, .35))) + + scale_y_discrete(name = "") + + scale_fill_manual(values = c("#B4C8A8", "#DE8A5A", "#CA562C")) + + labs(title = "Housing Burden for Families Earning Below and Above the Self-Sufficiency Standard", + subtitle = geography_label, + caption = acs_pums) + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "top", + legend.location = "plot", + legend.justification="center", + legend.text = element_text(size = 13), + panel.grid.major.y = element_blank(), + axis.ticks = element_blank(), + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.y = element_text(hjust = 0.5, color = "black", size = 14), + text = element_text(size = 14), + axis.title.x = element_text(size=12), + plot.title = element_text(size = 18), + plot.caption = element_text(size = 12)) + +``` + + +## Locality Profiles + +The following sections explore each locality separately, detailing the family income required to be self-sufficient in each of the localities that comprise the region. The expenses for basic needs and corresponding wages are provided by the Self-Sufficiency Standard, a project of the Center for Women’s Welfare at the University of Washington. Basic minimum needs include: housing, child care, food, transportation, health care, miscellaneous expenses (clothing, telephone, household items), and taxes (minus federal and state tax credits).^[Because the Self-Sufficiency Standard is calculated for specific family compositions, we provide averages for each locality for expenses and self-sufficient wages based on the most common family types (one or two adults and one or two children). Detailed tables are provided in the appendix for specific family compositions.] + +For each locality, we show how families are faring by race, and where populations are high enough, by ethnicity. These figures include measures of families earning above and below the locality’s self-sufficiency wage, as well as those earning less than $35,000, for comparison with previous versions of the Orange Dot Report. + +The locality profiles also include maps, showing each locality in more detail using census tracts. Census tracts are areas determined by the U.S. Census Bureau to approximate neighborhoods; they are roughly equal in population and are bounded by major roads, rivers and railroad tracks. + +The geographic variation in our region is evident across these census tracts. The City of Charlottesville is roughly 10 square miles and is relatively densely populated, compared to much of the surrounding counties. In comparison, Albemarle is 726 square miles, with both dense neighborhoods and sprawling rural ones. While there is variation across the communities that define the greater Charlottesville region, there is one constant: throughout the region there are hundreds of families who struggle every day to put a roof over their heads, food in their bellies, clothes on their backs and heat in their homes. + +### Albemarle County +```{r} +# Set name +local_name <- "Albemarle County" + +<> + +``` + +```{r locality_summary, echo=FALSE} +# Calculate summary values ---- +# Total Families and Total Below SSW +total_fam <- fam_ssw_totals %>% + filter(group == "All Families" & locality == local_name) + +total <- prettyNum(total_fam$total_fam_round, big.mark=",", preserve.width="none") +locality_name <- total_fam$locality +below_ssw <- prettyNum(total_fam$below_ssw_round, big.mark=",", preserve.width="none") +below_ssw_per <- percent(total_fam$below_per_round, scale = 1, accuracy = 1) + +# Black families +black_fam <- fam_ssw_totals %>% + filter(group == "Black Families" & locality == local_name) +below_ssw_black <- prettyNum(black_fam$below_ssw_round, big.mark=",", preserve.width="none") +below_ssw_per_black <- black_fam$below_per_round + +# Hispanic families +his_fam <- fam_ssw_totals %>% + filter(group == "Hispanic Families" & locality == local_name) +below_ssw_his <- prettyNum(his_fam$below_ssw_round, big.mark=",", preserve.width="none") +below_ssw_per_his <- his_fam$below_per_round + +# White families +white_fam <- fam_ssw_totals %>% + filter(group == "White Families" & locality == local_name) +below_ssw_white <- prettyNum(white_fam$below_ssw_round, big.mark=",", preserve.width="none") +below_ssw_per_white <- white_fam$below_per_round + +# SSW table +selfsuff_table_data <- selfsuff_table %>% + filter(county == local_name) + +ssw_annual<- selfsuff_table_data %>% + filter(name == "Self Sufficiency Wage") +ssw_annual<- paste0("$", prettyNum(ssw_annual$Annual, big.mark=",", preserve.width="none")) + +# Median Family income +med_faminc <- med_faminc_county %>% + filter(locality == local_name) +med_faminc<-paste0("$", prettyNum(med_faminc$estimate, big.mark=",", preserve.width="none")) + +med_faminc_low <- med_faminc_tract %>% + filter(locality == local_name) %>% + filter(estimate == min(estimate, na.rm = TRUE)) +med_faminc_low_est <- paste0("$", prettyNum(med_faminc_low$estimate, big.mark=",", preserve.width="none")) +med_faminc_low_name <- med_faminc_low$tractnames + +med_faminc_high <- med_faminc_tract %>% + filter(locality == local_name) %>% + filter(estimate == max(estimate, na.rm = TRUE)) +med_faminc_high_est <- paste0("$", prettyNum(med_faminc_high$estimate, big.mark=",", preserve.width="none")) +med_faminc_high_name <- med_faminc_high$tractnames + +# SSW by tract +ssw_tract_high <- ssw_tract %>% + filter(locality == local_name) %>% + filter(percent == max(percent, na.rm = TRUE)) +ssw_tract_high_per <- unique(ssw_tract_high$percent) +ssw_tract_high_name <- paste(ssw_tract_high$tractnames, collapse = " and ") + +ssw_tract_low <- ssw_tract %>% + filter(locality == local_name) %>% + filter(percent == min(percent, na.rm = TRUE)) +ssw_tract_low_per <- unique(ssw_tract_low$percent) +ssw_tract_low_name <- paste(ssw_tract_low$tractnames, collapse = " and ") + +# Section summary texts ---- + +section_summary_w_hisp <- paste0(" +

There are ", total, " families living in ", locality_name, ". Of these families, ", below_ssw," (", below_ssw_per,") do not earn enough to provide for their family’s basic needs.

+

", locality_name, " at a glance:

+ +") + +section_summary <- paste0(" +

There are ", total, " families living in ", locality_name, ". Of these families, ", below_ssw," (", below_ssw_per,") do not earn enough to provide for their family’s basic needs.

+

", locality_name, " at a glance:

+ +") + + +``` + + +`r section_summary_w_hisp` + + +```{r ssw_table, opts.label='fullwidth_table'} +# County self sufficiency table ---- +selfsuff_table_print <- selfsuff_table %>% + filter(county == local_name) + +selfsuff_table_print %>% + select(-c(county)) %>% + gt(rowname_col = "name") %>% + fmt_currency( + columns = 2:3, + currency = currency( + html = "$", + default = "$" + ), + decimals = 2 + ) %>% + tab_style( + style = list( + cell_fill(color = "#F6D2A9"), + cell_text(weight = "bold") + ), + locations = list(cells_body(rows = 11), cells_stub(rows = 11)) + ) %>% + tab_style( + style = cell_text(align = "center", v_align = "middle"), + locations = list(cells_column_labels(), cells_body()) + ) %>% + tab_style( + style = cell_text(weight = "bold"), + locations = list(cells_column_labels()) + ) %>% + tab_header( + title = paste0(ssw_table_title, unique(selfsuff_table_print$county)) + ) %>% + tab_source_note( + source_note = uw_sss_source + ) + +``` + + +```{r ssw_bar_w_hisp, opts.label='fullwidth_bar'} +# Families with income below 35k, between 35k-self sufficiency wage & above ssw ---- +fam_ssw_bar <- fam_ssw_dat %>% + filter(locality == local_name) + +fam_ssw_bar %>% + arrange(desc(name)) %>% + ggplot(aes(x = group, y = percent_round, group = group, fill = name, + label = text)) + + geom_bar(stat = "identity", color = "white") + + geom_text(size = 3.5, position = position_stack(vjust = 0.5), lineheight = 1) + + scale_fill_manual(values = fam_ssw_pal) + + scale_x_discrete(name = "") + + scale_y_continuous(labels = label_percent(scale = 1), + name = "") + + guides(fill = guide_legend(reverse = TRUE)) + + labs(title = fam_ssw_title, + subtitle = unique(fam_ssw_bar$locality_label), + caption = source_acs) + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "top", + legend.location = "plot", + legend.text = element_text(size = 9), + panel.grid.major.x = element_blank(), + axis.ticks = element_blank(), + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.x = element_text(color = "black", size = 11)) +``` + + +```{r, fig.width=9, fig.height=11, out.width = '100%'} +# Geospatial visualization: Albemarle ---- +income_map <- med_faminc_tract %>% + filter(locality == local_name) %>% + mutate(estimate = round(estimate, -3), + text = paste0("$", prettyNum((estimate/1000), big.mark=",", preserve.width="none"), "K")) %>% + ggplot() + + annotation_map_tile(zoomin = 1, progress = "none", cachedir = "../data/tempdata/") + + geom_sf(aes(fill = estimate), color = "white") + + geom_sf_text(aes(label = text), size = 3, color = "black") + + scale_fill_stepsn(colors = rev(pal_inc), + labels = scales::label_currency(scale = 1), + trans = "log", + n.breaks = 7, + limits = c(min_inc, max_inc), + na.value = "grey70", + guide = guide_colourbar(title = "Median Family Income", + title.position = "top", + direction = "horizontal", + title.hjust = 0.5, + theme = theme(legend.key.height = unit(0.5, "lines"), + legend.key.width = unit(26, "lines"), + text = element_text(size = 10)) + ) + )+ + labs(title = "Median Family Income by Tract", + subtitle = local_name, + caption = source_acs) + + theme_map() + + theme(legend.position="top", + legend.position.inside=c(1, 1.06), + legend.justification="center", + plot.title = element_text(size = 16), + plot.subtitle = element_text(size = 14), + plot.caption = element_text(size = 9)) + +income_map + +``` + +```{r, fig.width=9, fig.height=11, out.width = '100%'} +# Geospatial visualization: Albemarle ---- +below_ss_map <- ssw_tract %>% + filter(locality == local_name) %>% + filter(ssw_group == "below") %>% + mutate(text = paste0(round(percent,0), "%")) %>% + ggplot() + + annotation_map_tile(zoomin = 1, progress = "none", cachedir = "../data/tempdata/") + + geom_sf(aes(fill = percent), color = "white") + + geom_sf_text(aes(label = text), size = 3.5, color = "black") + + scale_fill_stepsn(colors = pal_ssw, + labels = scales::label_percent(scale = 1), + breaks = c(5,7,15,20,40,60), + trans = "log", + limits = c(min_ssw, max_ssw), + na.value = "grey70", + guide = guide_colourbar(title = "Percent Below Self-Sufficient Wages", + title.position = "top", + direction = "horizontal", + title.hjust = 0.5, + theme = theme(legend.key.height = unit(0.5, "lines"), + legend.key.width = unit(18, "lines"), + text = element_text(size = 10)) + ) + )+ + labs(title = "Families with Income below Self-Sufficiency", + subtitle = local_name, + caption = source_acs) + + theme_map()+ + theme(legend.position="top", + legend.position.inside=c(1, 1.06), + legend.justification="center", + plot.title = element_text(size = 16), + plot.subtitle = element_text(size = 14), + plot.caption = element_text(size = 9)) + +below_ss_map +``` + +### Buckingham County +```{r, echo=FALSE} +# Set name +local_name <- "Buckingham County" + +<> + +``` + +`r section_summary` + + +```{r ssw_table_buc} +<> +``` + +```{r ssw_bar, opts.label='fullwidth_bar'} +# Families with income below 35k, between 35k-self sufficiency wage & above ssw ---- +fam_ssw_bar <- fam_ssw_dat %>% + filter(locality == local_name & group != "Hispanic Families") + +fam_ssw_bar %>% + arrange(desc(name)) %>% + ggplot(aes(x = group, y = value, group = group, fill = name, + label = text)) + + geom_bar(stat = "identity", color = "white") + + geom_text(size = 3.5, position = position_stack(vjust = 0.5), lineheight = 1) + + scale_fill_manual(values = fam_ssw_pal) + + scale_x_discrete(name = "") + + scale_y_continuous(labels = label_percent(scale = 1), + name = "") + + guides(fill = guide_legend(reverse = TRUE)) + + labs(title = fam_ssw_title, + subtitle = unique(fam_ssw_bar$locality_label), + caption = source_acs) + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "top", + legend.location = "plot", + legend.text = element_text(size = 9), + panel.grid.major.x = element_blank(), + axis.ticks = element_blank(), + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.x = element_text(color = "black", size = 11)) +``` + + +```{r geo_income, fig.width = 7, fig.height=8, out.width = '100%'} + +income_map <- med_faminc_tract %>% + filter(locality == local_name) %>% + mutate(text = case_when(is.na(estimate) ~ "", + .default = paste0("$", prettyNum(estimate, big.mark=",", preserve.width="none")))) %>% + ggplot() + + annotation_map_tile(zoomin = 1, progress = "none", cachedir = "../data/tempdata/") + + geom_sf(aes(fill = estimate), color = "white") + + geom_sf_text(aes(label = text), size = 4, color = "black") + + scale_fill_stepsn(colors = rev(pal_inc), + labels = scales::label_currency(scale = 1), + trans = "log", + n.breaks = 7, + limits = c(min_inc, max_inc), + na.value = "grey70", + guide = guide_colourbar(title = "Median Family Income", + title.position = "top", + direction = "horizontal", + title.hjust = 0.5, + theme = theme(legend.key.height = unit(0.5, "lines"), + legend.key.width = unit(26, "lines"), + text = element_text(size = 10)) + ) + )+ + labs(title = "Median Family Income by Tract", + subtitle = local_name, + caption = source_acs) + + theme_map() + + theme(legend.position="top", + legend.position.inside=c(1, 1.06), + legend.justification="center", + plot.title = element_text(size = 16), + plot.subtitle = element_text(size = 14), + plot.caption = element_text(size = 9)) + +income_map + + +``` + +```{r geo_below_ss, fig.width = 7, fig.height=8, out.width = '100%'} + +below_ss_map <- ssw_tract %>% + filter(locality == local_name) %>% + filter(ssw_group == "below") %>% + mutate(text = paste0(round(percent,0), "%")) %>% + ggplot() + + annotation_map_tile(zoomin = 1, progress = "none", cachedir = "../data/tempdata/") + + geom_sf(aes(fill = percent), color = "white") + + geom_sf_text(aes(label = text), size = 4, color = "black") + + scale_fill_stepsn(colors = pal_ssw, + labels = scales::label_percent(scale = 1), + breaks = c(5,7,15,20,40,60), + trans = "log", + limits = c(min_ssw, max_ssw), + na.value = "grey70", + guide = guide_colourbar(title = "Percent Below Self-Sufficient Wages", + title.position = "top", + direction = "horizontal", + title.hjust = 0.5, + theme = theme(legend.key.height = unit(0.5, "lines"), + legend.key.width = unit(18, "lines"), + text = element_text(size = 10)) + ) + )+ + labs(title = "Families with Income below Self-Sufficiency", + subtitle = local_name, + caption = source_acs) + + theme_map()+ + theme(legend.position="top", + legend.position.inside=c(1, 1.06), + legend.justification="center", + plot.title = element_text(size = 16), + plot.subtitle = element_text(size = 14), + plot.caption = element_text(size = 9)) + +below_ss_map + +``` + +### City of Charlottesville +```{r, echo=FALSE} +# Set name +local_name <- "Charlottesville City" + +<> + +``` + +`r section_summary_w_hisp` + +```{r ssw_table_cville} +<> +``` + +```{r ssw_bar_cville, opts.label='fullwidth_bar'} +<> +``` + +```{r geo_income_cville, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +```{r geo_below_ss_cville, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +### Fluvanna County +```{r, echo=FALSE} +# Set name +local_name <- "Fluvanna County" + +<> + +``` + +`r section_summary` + +```{r ssw_table_flu} +<> +``` + +```{r ssw_bar_flu, opts.label='fullwidth_bar'} +<> +``` + + +```{r geo_income_flu, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +```{r geo_below_ss_flu, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +### Greene County +```{r, echo=FALSE} +# Set name +local_name <- "Greene County" + +<> + +``` + +`r section_summary` + +```{r ssw_table_grn} +<> +``` + +```{r ssw_bar_grn, opts.label='fullwidth_bar'} +<> +``` + + +```{r geo_income_grn, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +```{r geo_below_ss_grn, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +### Louisa County +```{r, echo=FALSE} +# Set name +local_name <- "Louisa County" + +<> + +``` + +`r section_summary` + +```{r ssw_table_lou} +<> +``` + +```{r ssw_bar_lou, opts.label='fullwidth_bar'} +<> +``` + + +```{r geo_income_lou, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +```{r geo_below_ss_lou, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +### Nelson County +```{r, echo=FALSE} +# Set name +local_name <- "Nelson County" + +<> + +``` + +`r section_summary` + +```{r ssw_table_nel} +<> +``` + +```{r ssw_bar_nel, opts.label='fullwidth_bar'} +<> +``` + + +```{r geo_income_nel, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +```{r geo_below_ss_nel, fig.width = 7, fig.height=8, out.width = '100%'} +<> +``` + +## Credits + +This report was done in partnership between Network2Work@PVCC and the UVA Equity Center. + +The authors of this report are: + +Elizabeth Mitchell, Data Scientist of Equitable Analysis, The Equity Center, University of Virginia. + +Michele Claibourn, Director of Equitable Analysis, The Equity Center, University of Virginia and Assistant Professor, Batten School of Leadership and Public Policy, University of Virginia. + +Ridge Schuyler, Dean of Community Self-Sufficiency Programs, Piedmont Virginia Community College, originated the Orange Dot Report in 2011 and authored three prior updates (2015, 2018, 2021). + +### Project Repository +The work supporting the Orange Dot Report 6.0, including our data collection documentation and the corresponding data, is publicly available on Github at https://github.com/virginiaequitycenter/orange-dot/tree/main + +This work is licensed under a Creative Commons Attribution 4.0 International License. + + +## Appendix diff --git a/OrangeDot6_files/final_report/orange-dot-6-final-knit.docx b/OrangeDot6_files/final_report/orange-dot-6-final-knit.docx new file mode 100644 index 0000000..409cb81 Binary files /dev/null and b/OrangeDot6_files/final_report/orange-dot-6-final-knit.docx differ diff --git a/OrangeDot6_files/final_report/orange-dot-6-final-print.docx b/OrangeDot6_files/final_report/orange-dot-6-final-print.docx new file mode 100644 index 0000000..a96da87 Binary files /dev/null and b/OrangeDot6_files/final_report/orange-dot-6-final-print.docx differ diff --git a/OrangeDot6_files/final_report/orange-dot-6-final-print.pdf b/OrangeDot6_files/final_report/orange-dot-6-final-print.pdf new file mode 100644 index 0000000..c4ccf39 Binary files /dev/null and b/OrangeDot6_files/final_report/orange-dot-6-final-print.pdf differ diff --git a/OrangeDot6_files/final_report/orange-dot-6-summary-print.pdf b/OrangeDot6_files/final_report/orange-dot-6-summary-print.pdf new file mode 100644 index 0000000..a245402 Binary files /dev/null and b/OrangeDot6_files/final_report/orange-dot-6-summary-print.pdf differ diff --git a/OrangeDot6_files/final_report/styles.docx b/OrangeDot6_files/final_report/styles.docx new file mode 100644 index 0000000..4da1947 Binary files /dev/null and b/OrangeDot6_files/final_report/styles.docx differ diff --git a/OrangeDot6_files/microdata/data/occupations_by_wagebin.csv b/OrangeDot6_files/microdata/data/occupations_by_wagebin.csv index 224130e..bcf93b6 100644 --- a/OrangeDot6_files/microdata/data/occupations_by_wagebin.csv +++ b/OrangeDot6_files/microdata/data/occupations_by_wagebin.csv @@ -1,361 +1,361 @@ -occupation,annual_median_wage_2,employment_per_1_000_jobs,median_wage_bin,median_wage_bin_label -"Ushers, Lobby Attendants, and Ticket Takers",25610,0.85,1,25610-37760 -Home Health and Personal Care Aides,26720,15.519,1,25610-37760 -"Hosts and Hostesses, Restaurant, Lounge, and Coffee Shop",27570,3.074,1,25610-37760 -Childcare Workers,28390,3.187,1,25610-37760 -Amusement and Recreation Attendants,28540,1.878,1,25610-37760 -Cashiers,28580,21.063,1,25610-37760 -Manicurists and Pedicurists,28820,0.881,1,25610-37760 -"Cooks, Fast Food",28840,3.452,1,25610-37760 -Dining Room and Cafeteria Attendants and Bartender Helpers,28900,2.646,1,25610-37760 -"Production Workers, All Other",28960,0.452,1,25610-37760 -"Lifeguards, Ski Patrol, and Other Recreational Protective Service Workers",29040,1.14,1,25610-37760 -Fast Food and Counter Workers,29190,24.331,1,25610-37760 -Parking Attendants,29230,0.274,1,25610-37760 -Food Preparation Workers,29260,4.603,1,25610-37760 -Dishwashers,29330,3.523,1,25610-37760 -Dietetic Technicians,29370,NA,1,25610-37760 -"Food Servers, Nonrestaurant",29370,2.242,1,25610-37760 -Bakers,29370,1.387,1,25610-37760 -Tour and Travel Guides,29640,0.901,1,25610-37760 -Animal Caretakers,29680,2.818,1,25610-37760 -"Library Assistants, Clerical",29730,0.918,1,25610-37760 -Laundry and Dry-Cleaning Workers,29790,1.352,1,25610-37760 -Retail Salespersons,29940,22.081,1,25610-37760 -"Hotel, Motel, and Resort Desk Clerks",30010,2.574,1,25610-37760 -"Janitors and Cleaners, Except Maids and Housekeeping Cleaners",30180,9.312,1,25610-37760 -Helpers--Production Workers,30610,0.394,1,25610-37760 -"Cooks, Short Order",30620,0.685,1,25610-37760 -Cleaners of Vehicles and Equipment,30690,1.001,1,25610-37760 -Demonstrators and Product Promoters,30740,1.097,1,25610-37760 -"Packers and Packagers, Hand",30770,1.054,1,25610-37760 -Refuse and Recyclable Material Collectors,31500,0.881,1,25610-37760 -Orderlies,31910,0.871,1,25610-37760 -Shuttle Drivers and Chauffeurs,31990,2.179,1,25610-37760 -Parts Salespersons,32040,1.087,1,25610-37760 -Concierges,32380,0.506,1,25610-37760 -"Farmworkers, Farm, Ranch, and Aquacultural Animals",32660,0.401,1,25610-37760 -Maids and Housekeeping Cleaners,32770,11.556,1,25610-37760 -Waiters and Waitresses,33060,17.82,1,25610-37760 -"Mail Clerks and Mail Machine Operators, Except Postal Service",33070,0.298,1,25610-37760 -Machine Feeders and Offbearers,33150,0.343,1,25610-37760 -"Farmworkers and Laborers, Crop, Nursery, and Greenhouse",33250,1.326,1,25610-37760 -Physical Therapist Aides,33380,0.425,1,25610-37760 -Recreation Workers,33590,2.075,1,25610-37760 -Stockers and Order Fillers,33740,14.022,1,25610-37760 -Veterinary Assistants and Laboratory Animal Caretakers,33890,2.408,1,25610-37760 -Receptionists and Information Clerks,34160,7.424,1,25610-37760 -"Substitute Teachers, Short-Term",34640,4.744,1,25610-37760 -"Cooks, Restaurant",34950,11.379,1,25610-37760 -Order Clerks,35150,0.477,1,25610-37760 -"Teaching Assistants, Except Postsecondary",35250,8.932,1,25610-37760 -"Laborers and Freight, Stock, and Material Movers, Hand",35460,6.673,1,25610-37760 -Data Entry Keyers,35780,0.709,1,25610-37760 -"Umpires, Referees, and Other Sports Officials",36060,0.425,1,25610-37760 -Floral Designers,36120,0.273,1,25610-37760 -"Cooks, Institution and Cafeteria",36210,3.753,1,25610-37760 -Helpers--Carpenters,36240,0.49,1,25610-37760 -Printing Press Operators,36270,0.743,1,25610-37760 -Miscellaneous Assemblers and Fabricators,36480,1.795,1,25610-37760 -Landscaping and Groundskeeping Workers,36700,8.433,1,25610-37760 -Customer Service Representatives,36710,12.609,1,25610-37760 -Emergency Medical Technicians,36940,1.657,1,25610-37760 -Residential Advisors,36940,0.582,1,25610-37760 -Merchandise Displayers and Window Trimmers,37010,1.297,1,25610-37760 -"Helpers--Pipelayers, Plumbers, Pipefitters, and Steamfitters",37060,0.463,1,25610-37760 -"Hairdressers, Hairstylists, and Cosmetologists",37130,2.372,1,25610-37760 -"Helpers--Installation, Maintenance, and Repair Workers",37160,0.921,1,25610-37760 -Helpers--Electricians,37200,0.617,1,25610-37760 -Counter and Rental Clerks,37270,3.242,1,25610-37760 -Nursing Assistants,37400,15.181,1,25610-37760 -Phlebotomists,37600,0.74,1,25610-37760 -"Preschool Teachers, Except Special Education",37610,2.36,1,25610-37760 -"Shipping, Receiving, and Inventory Clerks",37760,2.684,1,25610-37760 -Skincare Specialists,37860,0.324,2,37860-48320 -"Healthcare Support Workers, All Other",37900,2.012,2,37860-48320 -Security Guards,37920,3.098,2,37860-48320 -Driver/Sales Workers,38000,3.086,2,37860-48320 -Medical Secretaries and Administrative Assistants,38200,5.342,2,37860-48320 -Industrial Truck and Tractor Operators,38270,1.243,2,37860-48320 -Construction Laborers,38290,5.632,2,37860-48320 -"Electrical, electronic, and electromechanical assemblers, except coil winders, tapers, and finishers",38290,1.756,2,37860-48320 -"Interviewers, Except Eligibility and Loan",38300,0.987,2,37860-48320 -Packaging and Filling Machine Operators and Tenders,38370,0.766,2,37860-48320 -Tellers,38410,1.185,2,37860-48320 -Tire Repairers and Changers,38520,0.447,2,37860-48320 -"Court, Municipal, and License Clerks",38640,0.536,2,37860-48320 -Firefighters,38990,2.782,2,37860-48320 -Butchers and Meat Cutters,39140,0.573,2,37860-48320 -"Tax Examiners and Collectors, and Revenue Agents",39390,0.268,2,37860-48320 -Medical Assistants,39500,3.593,2,37860-48320 -Social and Human Service Assistants,39680,2.776,2,37860-48320 -"Office Clerks, General",39990,17.741,2,37860-48320 -"News Analysts, Reporters, and Journalists",40040,0.345,2,37860-48320 -Ophthalmic Medical Technicians,40460,0.92,2,37860-48320 -"Sawing Machine Setters, Operators, and Tenders, Wood",41110,0.436,2,37860-48320 -"Bus Drivers, Transit and Intercity",41120,2.892,2,37860-48320 -Tutors,41170,0.771,2,37860-48320 -Light Truck Drivers,41390,3.711,2,37860-48320 -Public Safety Telecommunicators,41770,0.721,2,37860-48320 -Travel Agents,42470,0.398,2,37860-48320 -Transportation Security Screeners,42520,0.293,2,37860-48320 -Pest Control Workers,42630,0.571,2,37860-48320 -Bartenders,42640,4.609,2,37860-48320 -"Information and Record Clerks, All Other",42660,0.743,2,37860-48320 -"Motor Vehicle Operators, All Other",42690,0.31,2,37860-48320 -"Computer, Automated Teller, and Office Machine Repairers",42880,0.423,2,37860-48320 -"Maintenance and Repair Workers, General",44210,10.271,2,37860-48320 -Highway Maintenance Workers,44280,1.368,2,37860-48320 -"First-Line Supervisors of Entertainment and Recreation Workers, Except Gambling Services",44470,0.822,2,37860-48320 -Pharmacy Technicians,44480,3.775,2,37860-48320 -"Mixing and Blending Machine Setters, Operators, and Tenders",44490,0.29,2,37860-48320 -First-Line Supervisors of Food Preparation and Serving Workers,44630,8.645,2,37860-48320 -"Painters, Construction and Maintenance",44810,1.309,2,37860-48320 -Library Technicians,44870,1.019,2,37860-48320 -Billing and Posting Clerks,45050,1.274,2,37860-48320 -"Separating, Filtering, Clarifying, Precipitating, and Still Machine Setters, Operators, and Tenders",45160,1.343,2,37860-48320 -"Human Resources Assistants, Except Payroll and Timekeeping",45330,0.631,2,37860-48320 -Surveying and Mapping Technicians,45490,0.521,2,37860-48320 -Insurance Claims and Policy Processing Clerks,45490,1.217,2,37860-48320 -Outdoor Power Equipment and Other Small Engine Mechanics,45590,0.274,2,37860-48320 -Dental Assistants,45640,2.274,2,37860-48320 -Rehabilitation Counselors,45810,0.683,2,37860-48320 -First-Line Supervisors of Housekeeping and Janitorial Workers,45970,1.502,2,37860-48320 -First-Line Supervisors of Personal Service Workers,46200,1.073,2,37860-48320 -Civil Engineering Technologists and Technicians,46300,0.636,2,37860-48320 -Cabinetmakers and Bench Carpenters,46680,0.592,2,37860-48320 -Self-Enrichment Teachers,46760,1.694,2,37860-48320 -"Installation, Maintenance, and Repair Workers, All Other",46760,0.768,2,37860-48320 -Exercise Trainers and Group Fitness Instructors,46810,3.509,2,37860-48320 -Correctional Officers and Jailers,46840,5.032,2,37860-48320 -Drywall and Ceiling Tile Installers,46890,0.357,2,37860-48320 -Operating Engineers and Other Construction Equipment Operators,46970,2.569,2,37860-48320 -Logging Equipment Operators,47140,0.618,2,37860-48320 -Bill and Account Collectors,47320,0.41,2,37860-48320 -Photographers,47330,0.391,2,37860-48320 -"Bus Drivers, School",47470,4.204,2,37860-48320 -"Title Examiners, Abstractors, and Searchers",47550,0.478,2,37860-48320 -"Bookkeeping, Accounting, and Auditing Clerks",47610,9.791,2,37860-48320 -"Secretaries and Administrative Assistants, Except Legal, Medical, and Executive",47620,11.55,2,37860-48320 -First-Line Supervisors of Retail Sales Workers,47710,7.682,2,37860-48320 -Coaches and Scouts,47830,2.344,2,37860-48320 -Real Estate Sales Agents,47840,1.95,2,37860-48320 -"Teaching Assistants, Postsecondary",48190,NA,2,37860-48320 -Legal Secretaries and Administrative Assistants,48250,0.485,2,37860-48320 -"Welders, Cutters, Solderers, and Brazers",48320,0.861,2,37860-48320 -Automotive Service Technicians and Mechanics,48340,4.391,3,48340-60600 -Massage Therapists,48370,0.914,3,48340-60600 -"Educational Instruction and Library Workers, All Other",48570,0.705,3,48340-60600 -Heavy and Tractor-Trailer Truck Drivers,48610,5.821,3,48340-60600 -"Inspectors, Testers, Sorters, Samplers, and Weighers",48670,1.294,3,48340-60600 -Cement Masons and Concrete Finishers,48680,1.521,3,48340-60600 -Carpenters,48870,5.529,3,48340-60600 -"Office and Administrative Support Workers, All Other",48900,3.412,3,48340-60600 -Roofers,49030,0.502,3,48340-60600 -Social Science Research Assistants,49040,0.773,3,48340-60600 -"Eligibility Interviewers, Government Programs",49110,0.97,3,48340-60600 -First-Line Supervisors of Firefighting and Prevention Workers,49240,0.33,3,48340-60600 -Veterinary Technologists and Technicians,49250,0.952,3,48340-60600 -"Excavating and Loading Machine and Dragline Operators, Surface Mining",49600,0.55,3,48340-60600 -"Substance abuse, behavioral disorder, and mental health counselors",49820,2.436,3,48340-60600 -"Health Technologists and Technicians, All Other",50080,0.866,3,48340-60600 -"Production, Planning, and Expediting Clerks",50110,1.022,3,48340-60600 -Detectives and Criminal Investigators,50210,1.324,3,48340-60600 -"Life, Physical, and Social Science Technicians, All Other",50270,NA,3,48340-60600 -Chemical Technicians,50300,0.917,3,48340-60600 -Paramedics,50480,0.684,3,48340-60600 -"Dispatchers, Except Police, Fire, and Ambulance",50750,0.914,3,48340-60600 -"Geoscientists, Except Hydrologists and Geographers",50760,0.266,3,48340-60600 -"Protective Service Workers, All Other",50780,0.447,3,48340-60600 -Brickmasons and Blockmasons,50950,0.359,3,48340-60600 -Bus and Truck Mechanics and Diesel Engine Specialists,51420,1.115,3,48340-60600 -Biological Technicians,51750,2.334,3,48340-60600 -Graphic Designers,51920,1.92,3,48340-60600 -Chefs and Head Cooks,52000,1.583,3,48340-60600 -"Securities, Commodities, and Financial Services Sales Agents",52070,3.045,3,48340-60600 -"Plumbers, Pipefitters, and Steamfitters",52090,2.503,3,48340-60600 -Producers and Directors,52690,0.725,3,48340-60600 -Water and Wastewater Treatment Plant and System Operators,53190,0.909,3,48340-60600 -"Special Education Teachers, Preschool",53280,0.302,3,48340-60600 -"Mobile Heavy Equipment Mechanics, Except Engines",53540,0.728,3,48340-60600 -"First-Line Supervisors of Transportation Workers, Except Aircraft Cargo Handling Supervisors",53740,2.528,3,48340-60600 -"Child, Family, and School Social Workers",53890,2.444,3,48340-60600 -Medical Equipment Repairers,53990,0.44,3,48340-60600 -Sheet Metal Workers,54180,0.324,3,48340-60600 -Medical Records Specialists,54390,1.797,3,48340-60600 -Payroll and Timekeeping Clerks,54570,0.909,3,48340-60600 -Police and Sheriff's Patrol Officers,56190,3.766,3,48340-60600 -"Kindergarten Teachers, Except Special Education",56310,1.122,3,48340-60600 -"Community and Social Service Specialists, All Other",56330,0.48,3,48340-60600 -Clinical Laboratory Technologists and Technicians,56380,1.907,3,48340-60600 -"First-Line Supervisors of Landscaping, Lawn Service, and Groundskeeping Workers",56380,1.174,3,48340-60600 -"Heating, Air Conditioning, and Refrigeration Mechanics and Installers",56480,3.31,3,48340-60600 -"Special Education Teachers, Secondary School",56580,1.563,3,48340-60600 -Insurance Sales Agents,56590,2.724,3,48340-60600 -First-Line Supervisors of Correctional Officers,56760,1.533,3,48340-60600 -Postal Service Mail Carriers,56760,1.883,3,48340-60600 -"Coating, Painting, and Spraying Machine Setters, Operators, and Tenders",57130,0.335,3,48340-60600 -Industrial Machinery Mechanics,57310,0.9,3,48340-60600 -Architectural and Civil Drafters,57370,0.356,3,48340-60600 -Mental Health and Substance Abuse Social Workers,57390,0.556,3,48340-60600 -Automotive Body and Related Repairers,57560,0.668,3,48340-60600 -Clergy,58090,0.443,3,48340-60600 -Interior Designers,58180,0.35,3,48340-60600 -Machinists,58210,0.724,3,48340-60600 -Tax Preparers,58260,0.687,3,48340-60600 -"First-Line Supervisors of Farming, Fishing, and Forestry Workers",58290,0.492,3,48340-60600 -Electricians,58630,6.591,3,48340-60600 -"Special Education Teachers, Middle School",58640,0.676,3,48340-60600 -"Opticians, Dispensing",59090,0.785,3,48340-60600 -"Elementary School Teachers, Except Special Education",59260,9.224,3,48340-60600 -"Claims Adjusters, Examiners, and Investigators",59620,0.756,3,48340-60600 -Paralegals and Legal Assistants,59660,1.935,3,48340-60600 -First-Line Supervisors of Office and Administrative Support Workers,59990,8.594,3,48340-60600 -"Sales Representatives of Services, Except Advertising, Insurance, Financial Services, and Travel",60010,7.423,3,48340-60600 -"Educational, Guidance, and Career Counselors and Advisors",60320,3.561,3,48340-60600 -"Sales Representatives, Wholesale and Manufacturing, Except Technical and Scientific Products",60390,4.374,3,48340-60600 -"Secondary School Teachers, Except Special and Career/Technical Education",60600,7.238,3,48340-60600 -Interpreters and Translators,60640,NA,4,60640-86950 -Computer User Support Specialists,60700,3.73,4,60640-86950 -"Meeting, Convention, and Event Planners",60780,2.051,4,60640-86950 -"Special Education Teachers, Kindergarten and Elementary School",60950,1.475,4,60640-86950 -Licensed Practical and Licensed Vocational Nurses,61120,4.398,4,60640-86950 -Insurance Underwriters,61130,0.544,4,60640-86950 -Postal Service Clerks,61150,0.631,4,60640-86950 -Healthcare Social Workers,61230,1.43,4,60640-86950 -Web and Digital Interface Designers,61610,0.789,4,60640-86950 -Power Plant Operators,61640,0.36,4,60640-86950 -Athletic Trainers,61670,0.403,4,60640-86950 -Fundraisers,61940,1.936,4,60640-86950 -"Medical Scientists, Except Epidemiologists",61940,5.475,4,60640-86950 -Writers and Authors,62120,0.535,4,60640-86950 -Editors,62250,1.85,4,60640-86950 -Dietitians and Nutritionists,62280,0.388,4,60640-86950 -"Middle School Teachers, Except Special and Career/Technical Education",62290,5.445,4,60640-86950 -Physical Therapist Assistants,62390,0.712,4,60640-86950 -"Career/Technical Education Teachers, Secondary School",62720,0.975,4,60640-86950 -Food Service Managers,62750,1.386,4,60640-86950 -Surveyors,62830,0.381,4,60640-86950 -Surgical Technologists,62880,1.202,4,60640-86950 -"Environmental Science and Protection Technicians, Including Health",63070,0.473,4,60640-86950 -"Business Operations Specialists, All Other",63250,6.667,4,60640-86950 -"Property, Real Estate, and Community Association Managers",63320,1.377,4,60640-86950 -Landscape Architects,63440,0.498,4,60640-86950 -Advertising Sales Agents,63490,0.575,4,60640-86950 -Construction and Building Inspectors,64170,0.816,4,60640-86950 -Electrical and Electronic Engineering Technologists and Technicians,64200,1.04,4,60640-86950 -Audio and Video Technicians,64200,0.657,4,60640-86950 -"First-Line Supervisors of Protective Service Workers, All Other",64240,0.289,4,60640-86950 -Executive Secretaries and Executive Administrative Assistants,64280,3.265,4,60640-86950 -Compliance Officers,65320,2.265,4,60640-86950 -Cost Estimators,65500,1.413,4,60640-86950 -"First-Line Supervisors of Mechanics, Installers, and Repairers",65680,3.338,4,60640-86950 -"Career/Technical Education Teachers, Postsecondary",65980,0.589,4,60640-86950 -Urban and Regional Planners,66340,0.428,4,60640-86950 -Computer Network Support Specialists,66610,0.821,4,60640-86950 -Training and Development Specialists,67810,2.876,4,60640-86950 -Market Research Analysts and Marketing Specialists,67940,6.102,4,60640-86950 -"Compensation, Benefits, and Job Analysis Specialists",67990,1.161,4,60640-86950 -First-Line Supervisors of Production and Operating Workers,68380,1.97,4,60640-86950 -"Telecommunications Equipment Installers and Repairers, Except Line Installers",68730,0.992,4,60640-86950 -Foresters,69490,0.3,4,60640-86950 -Loan Officers,72050,1.433,4,60640-86950 -Logisticians,72890,0.949,4,60640-86950 -Human Resources Specialists,72990,5.741,4,60640-86950 -Librarians and Media Collections Specialists,73330,2.281,4,60640-86950 -Radiologic Technologists and Technicians,74140,1.447,4,60640-86950 -First-Line Supervisors of Construction Trades and Extraction Workers,74270,6.558,4,60640-86950 -Buyers and Purchasing Agents,74480,3.227,4,60640-86950 -Lodging Managers,75270,0.353,4,60640-86950 -Occupational Health and Safety Specialists,75590,0.601,4,60640-86950 -Accountants and Auditors,78820,10.464,4,60640-86950 -"Financial Specialists, All Other",79000,1.409,4,60640-86950 -Art Directors,79210,0.327,4,60640-86950 -Bioengineers and Biomedical Engineers,79730,0.409,4,60640-86950 -"Healthcare Practitioners and Technical Workers, All Other",79890,0.385,4,60640-86950 -"Biological Scientists, All Other",80140,0.493,4,60640-86950 -Chemists,80520,0.687,4,60640-86950 -Respiratory Therapists,80550,1.086,4,60640-86950 -First-Line Supervisors of Non-Retail Sales Workers,80610,1.771,4,60640-86950 -Gas Plant Operators,81100,0.3,4,60640-86950 -"Education Administrators, All Other",81130,0.761,4,60640-86950 -Instructional Coordinators,81130,2.5,4,60640-86950 -Registered Nurses,81510,28.108,4,60640-86950 -Management Analysts,82990,6.209,4,60640-86950 -Electrical Power-Line Installers and Repairers,83280,0.639,4,60640-86950 -Labor Relations Specialists,84210,0.325,4,60640-86950 -Civil Engineers,85570,1.695,4,60640-86950 -Database Administrators,85660,0.717,4,60640-86950 -Clinical and Counseling Psychologists,86950,0.672,4,60640-86950 -Budget Analysts,88050,0.406,5,88050-238990 -First-Line Supervisors of Police and Detectives,88110,0.932,5,88050-238990 -Web Developers,88120,1.104,5,88050-238990 -Technical Writers,88120,0.388,5,88050-238990 -Speech-Language Pathologists,89120,0.824,5,88050-238990 -"Architects, Except Landscape and Naval",89590,1.385,5,88050-238990 -Mechanical Engineers,89600,1.232,5,88050-238990 -Social and Community Service Managers,90700,0.986,5,88050-238990 -Personal Financial Advisors,91880,2.097,5,88050-238990 -Dental Hygienists,92000,1.173,5,88050-238990 -"Environmental Scientists and Specialists, Including Health",92940,0.513,5,88050-238990 -Project Management Specialists,93110,7.311,5,88050-238990 -Software Quality Assurance Analysts and Testers,93820,1.596,5,88050-238990 -Network and Computer Systems Administrators,95650,2.628,5,88050-238990 -Occupational Therapists,96380,1.096,5,88050-238990 -Computer Programmers,97150,0.385,5,88050-238990 -Operations Research Analysts,97430,0.426,5,88050-238990 -Marriage and Family Therapists,98860,0.353,5,88050-238990 -Industrial Engineers,99750,0.615,5,88050-238990 -Physical Therapists,99820,2.504,5,88050-238990 -Financial and Investment Analysts,99860,1.895,5,88050-238990 -Electrical Engineers,99890,1.149,5,88050-238990 -"Education Administrators, Kindergarten through Secondary",100280,2.415,5,88050-238990 -"Sales Representatives, Wholesale and Manufacturing, Technical and Scientific Products",100550,0.76,5,88050-238990 -"Electronics Engineers, Except Computer",101040,0.933,5,88050-238990 -Computer Systems Analysts,101130,4.067,5,88050-238990 -Construction Managers,101490,2.146,5,88050-238990 -Administrative Services Managers,101810,1.628,5,88050-238990 -Natural Sciences Managers,102910,0.609,5,88050-238990 -Physicists,103480,0.279,5,88050-238990 -"Transportation, Storage, and Distribution Managers",104080,0.496,5,88050-238990 -"Nursing Instructors and Teachers, Postsecondary",104270,0.905,5,88050-238990 -Industrial Production Managers,105020,0.371,5,88050-238990 -General and Operations Managers,105030,18.76,5,88050-238990 -Facilities Managers,105610,0.773,5,88050-238990 -Veterinarians,105990,0.857,5,88050-238990 -"English Language and Literature Teachers, Postsecondary",108000,1.572,5,88050-238990 -Information Security Analysts,109480,1.746,5,88050-238990 -Astronomers,111020,0.692,5,88050-238990 -"Computer Occupations, All Other",111610,1.177,5,88050-238990 -"Engineers, All Other",111610,0.432,5,88050-238990 -"Legal Support Workers, All Other",112440,0.329,5,88050-238990 -"Social Scientists and Related Workers, All Other",114900,3.345,5,88050-238990 -Computer Network Architects,115700,1,5,88050-238990 -Computer and Information Research Scientists,117320,0.32,5,88050-238990 -Data Scientists,117410,1.244,5,88050-238990 -"Physical Scientists, All Other",118540,0.711,5,88050-238990 -Training and Development Managers,119870,0.409,5,88050-238990 -Software Developers,120310,13.029,5,88050-238990 -Physician Assistants,123980,0.75,5,88050-238990 -Medical and Health Services Managers,124910,3.133,5,88050-238990 -Database Architects,125010,0.684,5,88050-238990 -Fundraising Managers,127620,0.652,5,88050-238990 -"Health Specialties Teachers, Postsecondary",129110,NA,5,88050-238990 -"Biological Science Teachers, Postsecondary",130650,1.026,5,88050-238990 -Sales Managers,131380,1.826,5,88050-238990 -Public Relations Managers,132410,1.036,5,88050-238990 -"Managers, All Other",133300,3.452,5,88050-238990 -Purchasing Managers,133890,0.608,5,88050-238990 -Nurse Practitioners,134870,4.45,5,88050-238990 -Pharmacists,136340,2.816,5,88050-238990 -Human Resources Managers,137610,1.361,5,88050-238990 -Lawyers,140360,3.434,5,88050-238990 -Architectural and Engineering Managers,143540,0.788,5,88050-238990 -Financial Managers,152780,3.853,5,88050-238990 -Marketing Managers,155010,1.512,5,88050-238990 -Computer and Information Systems Managers,155320,3.733,5,88050-238990 -"Dentists, General",169950,0.691,5,88050-238990 -"Physicians, All Other",206860,9.069,5,88050-238990 -Family Medicine Physicians,210970,0.663,5,88050-238990 -Nurse Anesthetists,224290,0.815,5,88050-238990 -Chief Executives,238990,1.225,5,88050-238990 +occupation,annual_median_wage_2,employment_per_1_000_jobs,median_wage_bin,median_wage_bin_label,soc_code,soc_group_num +"Ushers, Lobby Attendants, and Ticket Takers",25610,0.85,1,25610-37760,393031,39 +Home Health and Personal Care Aides,26720,15.519,1,25610-37760,311120,31 +"Hosts and Hostesses, Restaurant, Lounge, and Coffee Shop",27570,3.074,1,25610-37760,359031,35 +Childcare Workers,28390,3.187,1,25610-37760,399011,39 +Amusement and Recreation Attendants,28540,1.878,1,25610-37760,393091,39 +Cashiers,28580,21.063,1,25610-37760,412011,41 +Manicurists and Pedicurists,28820,0.881,1,25610-37760,395092,39 +"Cooks, Fast Food",28840,3.452,1,25610-37760,352011,35 +Dining Room and Cafeteria Attendants and Bartender Helpers,28900,2.646,1,25610-37760,359011,35 +"Production Workers, All Other",28960,0.452,1,25610-37760,519199,51 +"Lifeguards, Ski Patrol, and Other Recreational Protective Service Workers",29040,1.14,1,25610-37760,339092,33 +Fast Food and Counter Workers,29190,24.331,1,25610-37760,353023,35 +Parking Attendants,29230,0.274,1,25610-37760,536021,53 +Food Preparation Workers,29260,4.603,1,25610-37760,352021,35 +Dishwashers,29330,3.523,1,25610-37760,359021,35 +Dietetic Technicians,29370,NA,1,25610-37760,292051,29 +"Food Servers, Nonrestaurant",29370,2.242,1,25610-37760,353041,35 +Bakers,29370,1.387,1,25610-37760,513011,51 +Tour and Travel Guides,29640,0.901,1,25610-37760,397010,39 +Animal Caretakers,29680,2.818,1,25610-37760,392021,39 +"Library Assistants, Clerical",29730,0.918,1,25610-37760,434121,43 +Laundry and Dry-Cleaning Workers,29790,1.352,1,25610-37760,516011,51 +Retail Salespersons,29940,22.081,1,25610-37760,412031,41 +"Hotel, Motel, and Resort Desk Clerks",30010,2.574,1,25610-37760,434081,43 +"Janitors and Cleaners, Except Maids and Housekeeping Cleaners",30180,9.312,1,25610-37760,372011,37 +Helpers--Production Workers,30610,0.394,1,25610-37760,519198,51 +"Cooks, Short Order",30620,0.685,1,25610-37760,352015,35 +Cleaners of Vehicles and Equipment,30690,1.001,1,25610-37760,537061,53 +Demonstrators and Product Promoters,30740,1.097,1,25610-37760,419011,41 +"Packers and Packagers, Hand",30770,1.054,1,25610-37760,537064,53 +Refuse and Recyclable Material Collectors,31500,0.881,1,25610-37760,537081,53 +Orderlies,31910,0.871,1,25610-37760,311132,31 +Shuttle Drivers and Chauffeurs,31990,2.179,1,25610-37760,533053,53 +Parts Salespersons,32040,1.087,1,25610-37760,412022,41 +Concierges,32380,0.506,1,25610-37760,396012,39 +"Farmworkers, Farm, Ranch, and Aquacultural Animals",32660,0.401,1,25610-37760,452093,45 +Maids and Housekeeping Cleaners,32770,11.556,1,25610-37760,372012,37 +Waiters and Waitresses,33060,17.82,1,25610-37760,353031,35 +"Mail Clerks and Mail Machine Operators, Except Postal Service",33070,0.298,1,25610-37760,439051,43 +Machine Feeders and Offbearers,33150,0.343,1,25610-37760,537063,53 +"Farmworkers and Laborers, Crop, Nursery, and Greenhouse",33250,1.326,1,25610-37760,452092,45 +Physical Therapist Aides,33380,0.425,1,25610-37760,312022,31 +Recreation Workers,33590,2.075,1,25610-37760,399032,39 +Stockers and Order Fillers,33740,14.022,1,25610-37760,537065,53 +Veterinary Assistants and Laboratory Animal Caretakers,33890,2.408,1,25610-37760,319096,31 +Receptionists and Information Clerks,34160,7.424,1,25610-37760,434171,43 +"Substitute Teachers, Short-Term",34640,4.744,1,25610-37760,253031,25 +"Cooks, Restaurant",34950,11.379,1,25610-37760,352014,35 +Order Clerks,35150,0.477,1,25610-37760,434151,43 +"Teaching Assistants, Except Postsecondary",35250,8.932,1,25610-37760,259045,25 +"Laborers and Freight, Stock, and Material Movers, Hand",35460,6.673,1,25610-37760,537062,53 +Data Entry Keyers,35780,0.709,1,25610-37760,439021,43 +"Umpires, Referees, and Other Sports Officials",36060,0.425,1,25610-37760,272023,27 +Floral Designers,36120,0.273,1,25610-37760,271023,27 +"Cooks, Institution and Cafeteria",36210,3.753,1,25610-37760,352012,35 +Helpers--Carpenters,36240,0.49,1,25610-37760,473012,47 +Printing Press Operators,36270,0.743,1,25610-37760,515112,51 +Miscellaneous Assemblers and Fabricators,36480,1.795,1,25610-37760,512090,51 +Landscaping and Groundskeeping Workers,36700,8.433,1,25610-37760,373011,37 +Customer Service Representatives,36710,12.609,1,25610-37760,434051,43 +Emergency Medical Technicians,36940,1.657,1,25610-37760,292042,29 +Residential Advisors,36940,0.582,1,25610-37760,399041,39 +Merchandise Displayers and Window Trimmers,37010,1.297,1,25610-37760,271026,27 +"Helpers--Pipelayers, Plumbers, Pipefitters, and Steamfitters",37060,0.463,1,25610-37760,473015,47 +"Hairdressers, Hairstylists, and Cosmetologists",37130,2.372,1,25610-37760,395012,39 +"Helpers--Installation, Maintenance, and Repair Workers",37160,0.921,1,25610-37760,499098,49 +Helpers--Electricians,37200,0.617,1,25610-37760,473013,47 +Counter and Rental Clerks,37270,3.242,1,25610-37760,412021,41 +Nursing Assistants,37400,15.181,1,25610-37760,311131,31 +Phlebotomists,37600,0.74,1,25610-37760,319097,31 +"Preschool Teachers, Except Special Education",37610,2.36,1,25610-37760,252011,25 +"Shipping, Receiving, and Inventory Clerks",37760,2.684,1,25610-37760,435071,43 +Skincare Specialists,37860,0.324,2,37860-48320,395094,39 +"Healthcare Support Workers, All Other",37900,2.012,2,37860-48320,319099,31 +Security Guards,37920,3.098,2,37860-48320,339032,33 +Driver/Sales Workers,38000,3.086,2,37860-48320,533031,53 +Medical Secretaries and Administrative Assistants,38200,5.342,2,37860-48320,436013,43 +Industrial Truck and Tractor Operators,38270,1.243,2,37860-48320,537051,53 +Construction Laborers,38290,5.632,2,37860-48320,472061,47 +"Electrical, electronic, and electromechanical assemblers, except coil winders, tapers, and finishers",38290,1.756,2,37860-48320,512028,51 +"Interviewers, Except Eligibility and Loan",38300,0.987,2,37860-48320,434111,43 +Packaging and Filling Machine Operators and Tenders,38370,0.766,2,37860-48320,519111,51 +Tellers,38410,1.185,2,37860-48320,433071,43 +Tire Repairers and Changers,38520,0.447,2,37860-48320,493093,49 +"Court, Municipal, and License Clerks",38640,0.536,2,37860-48320,434031,43 +Firefighters,38990,2.782,2,37860-48320,332011,33 +Butchers and Meat Cutters,39140,0.573,2,37860-48320,513021,51 +"Tax Examiners and Collectors, and Revenue Agents",39390,0.268,2,37860-48320,132081,13 +Medical Assistants,39500,3.593,2,37860-48320,319092,31 +Social and Human Service Assistants,39680,2.776,2,37860-48320,211093,21 +"Office Clerks, General",39990,17.741,2,37860-48320,439061,43 +"News Analysts, Reporters, and Journalists",40040,0.345,2,37860-48320,273023,27 +Ophthalmic Medical Technicians,40460,0.92,2,37860-48320,292057,29 +"Sawing Machine Setters, Operators, and Tenders, Wood",41110,0.436,2,37860-48320,517041,51 +"Bus Drivers, Transit and Intercity",41120,2.892,2,37860-48320,533052,53 +Tutors,41170,0.771,2,37860-48320,253041,25 +Light Truck Drivers,41390,3.711,2,37860-48320,533033,53 +Public Safety Telecommunicators,41770,0.721,2,37860-48320,435031,43 +Travel Agents,42470,0.398,2,37860-48320,413041,41 +Transportation Security Screeners,42520,0.293,2,37860-48320,339093,33 +Pest Control Workers,42630,0.571,2,37860-48320,372021,37 +Bartenders,42640,4.609,2,37860-48320,353011,35 +"Information and Record Clerks, All Other",42660,0.743,2,37860-48320,434199,43 +"Motor Vehicle Operators, All Other",42690,0.31,2,37860-48320,533099,53 +"Computer, Automated Teller, and Office Machine Repairers",42880,0.423,2,37860-48320,492011,49 +"Maintenance and Repair Workers, General",44210,10.271,2,37860-48320,499071,49 +Highway Maintenance Workers,44280,1.368,2,37860-48320,474051,47 +"First-Line Supervisors of Entertainment and Recreation Workers, Except Gambling Services",44470,0.822,2,37860-48320,391014,39 +Pharmacy Technicians,44480,3.775,2,37860-48320,292052,29 +"Mixing and Blending Machine Setters, Operators, and Tenders",44490,0.29,2,37860-48320,519023,51 +First-Line Supervisors of Food Preparation and Serving Workers,44630,8.645,2,37860-48320,351012,35 +"Painters, Construction and Maintenance",44810,1.309,2,37860-48320,472141,47 +Library Technicians,44870,1.019,2,37860-48320,254031,25 +Billing and Posting Clerks,45050,1.274,2,37860-48320,433021,43 +"Separating, Filtering, Clarifying, Precipitating, and Still Machine Setters, Operators, and Tenders",45160,1.343,2,37860-48320,519012,51 +"Human Resources Assistants, Except Payroll and Timekeeping",45330,0.631,2,37860-48320,434161,43 +Surveying and Mapping Technicians,45490,0.521,2,37860-48320,173031,17 +Insurance Claims and Policy Processing Clerks,45490,1.217,2,37860-48320,439041,43 +Outdoor Power Equipment and Other Small Engine Mechanics,45590,0.274,2,37860-48320,493053,49 +Dental Assistants,45640,2.274,2,37860-48320,319091,31 +Rehabilitation Counselors,45810,0.683,2,37860-48320,211015,21 +First-Line Supervisors of Housekeeping and Janitorial Workers,45970,1.502,2,37860-48320,371011,37 +First-Line Supervisors of Personal Service Workers,46200,1.073,2,37860-48320,391022,39 +Civil Engineering Technologists and Technicians,46300,0.636,2,37860-48320,173022,17 +Cabinetmakers and Bench Carpenters,46680,0.592,2,37860-48320,517011,51 +Self-Enrichment Teachers,46760,1.694,2,37860-48320,253021,25 +"Installation, Maintenance, and Repair Workers, All Other",46760,0.768,2,37860-48320,499099,49 +Exercise Trainers and Group Fitness Instructors,46810,3.509,2,37860-48320,399031,39 +Correctional Officers and Jailers,46840,5.032,2,37860-48320,333012,33 +Drywall and Ceiling Tile Installers,46890,0.357,2,37860-48320,472081,47 +Operating Engineers and Other Construction Equipment Operators,46970,2.569,2,37860-48320,472073,47 +Logging Equipment Operators,47140,0.618,2,37860-48320,454022,45 +Bill and Account Collectors,47320,0.41,2,37860-48320,433011,43 +Photographers,47330,0.391,2,37860-48320,274021,27 +"Bus Drivers, School",47470,4.204,2,37860-48320,533051,53 +"Title Examiners, Abstractors, and Searchers",47550,0.478,2,37860-48320,232093,23 +"Bookkeeping, Accounting, and Auditing Clerks",47610,9.791,2,37860-48320,433031,43 +"Secretaries and Administrative Assistants, Except Legal, Medical, and Executive",47620,11.55,2,37860-48320,436014,43 +First-Line Supervisors of Retail Sales Workers,47710,7.682,2,37860-48320,411011,41 +Coaches and Scouts,47830,2.344,2,37860-48320,272022,27 +Real Estate Sales Agents,47840,1.95,2,37860-48320,419022,41 +"Teaching Assistants, Postsecondary",48190,NA,2,37860-48320,259044,25 +Legal Secretaries and Administrative Assistants,48250,0.485,2,37860-48320,436012,43 +"Welders, Cutters, Solderers, and Brazers",48320,0.861,2,37860-48320,514121,51 +Automotive Service Technicians and Mechanics,48340,4.391,3,48340-60600,493023,49 +Massage Therapists,48370,0.914,3,48340-60600,319011,31 +"Educational Instruction and Library Workers, All Other",48570,0.705,3,48340-60600,259099,25 +Heavy and Tractor-Trailer Truck Drivers,48610,5.821,3,48340-60600,533032,53 +"Inspectors, Testers, Sorters, Samplers, and Weighers",48670,1.294,3,48340-60600,519061,51 +Cement Masons and Concrete Finishers,48680,1.521,3,48340-60600,472051,47 +Carpenters,48870,5.529,3,48340-60600,472031,47 +"Office and Administrative Support Workers, All Other",48900,3.412,3,48340-60600,439199,43 +Roofers,49030,0.502,3,48340-60600,472181,47 +Social Science Research Assistants,49040,0.773,3,48340-60600,194061,19 +"Eligibility Interviewers, Government Programs",49110,0.97,3,48340-60600,434061,43 +First-Line Supervisors of Firefighting and Prevention Workers,49240,0.33,3,48340-60600,331021,33 +Veterinary Technologists and Technicians,49250,0.952,3,48340-60600,292056,29 +"Excavating and Loading Machine and Dragline Operators, Surface Mining",49600,0.55,3,48340-60600,475022,47 +"Substance abuse, behavioral disorder, and mental health counselors",49820,2.436,3,48340-60600,211018,21 +"Health Technologists and Technicians, All Other",50080,0.866,3,48340-60600,292099,29 +"Production, Planning, and Expediting Clerks",50110,1.022,3,48340-60600,435061,43 +Detectives and Criminal Investigators,50210,1.324,3,48340-60600,333021,33 +"Life, Physical, and Social Science Technicians, All Other",50270,NA,3,48340-60600,194099,19 +Chemical Technicians,50300,0.917,3,48340-60600,194031,19 +Paramedics,50480,0.684,3,48340-60600,292043,29 +"Dispatchers, Except Police, Fire, and Ambulance",50750,0.914,3,48340-60600,435032,43 +"Geoscientists, Except Hydrologists and Geographers",50760,0.266,3,48340-60600,192042,19 +"Protective Service Workers, All Other",50780,0.447,3,48340-60600,339099,33 +Brickmasons and Blockmasons,50950,0.359,3,48340-60600,472021,47 +Bus and Truck Mechanics and Diesel Engine Specialists,51420,1.115,3,48340-60600,493031,49 +Biological Technicians,51750,2.334,3,48340-60600,194021,19 +Graphic Designers,51920,1.92,3,48340-60600,271024,27 +Chefs and Head Cooks,52000,1.583,3,48340-60600,351011,35 +"Securities, Commodities, and Financial Services Sales Agents",52070,3.045,3,48340-60600,413031,41 +"Plumbers, Pipefitters, and Steamfitters",52090,2.503,3,48340-60600,472152,47 +Producers and Directors,52690,0.725,3,48340-60600,272012,27 +Water and Wastewater Treatment Plant and System Operators,53190,0.909,3,48340-60600,518031,51 +"Special Education Teachers, Preschool",53280,0.302,3,48340-60600,252051,25 +"Mobile Heavy Equipment Mechanics, Except Engines",53540,0.728,3,48340-60600,493042,49 +"First-Line Supervisors of Transportation Workers, Except Aircraft Cargo Handling Supervisors",53740,2.528,3,48340-60600,531047,53 +"Child, Family, and School Social Workers",53890,2.444,3,48340-60600,211021,21 +Medical Equipment Repairers,53990,0.44,3,48340-60600,499062,49 +Sheet Metal Workers,54180,0.324,3,48340-60600,472211,47 +Medical Records Specialists,54390,1.797,3,48340-60600,292072,29 +Payroll and Timekeeping Clerks,54570,0.909,3,48340-60600,433051,43 +Police and Sheriff's Patrol Officers,56190,3.766,3,48340-60600,333051,33 +"Kindergarten Teachers, Except Special Education",56310,1.122,3,48340-60600,252012,25 +"Community and Social Service Specialists, All Other",56330,0.48,3,48340-60600,211099,21 +Clinical Laboratory Technologists and Technicians,56380,1.907,3,48340-60600,292010,29 +"First-Line Supervisors of Landscaping, Lawn Service, and Groundskeeping Workers",56380,1.174,3,48340-60600,371012,37 +"Heating, Air Conditioning, and Refrigeration Mechanics and Installers",56480,3.31,3,48340-60600,499021,49 +"Special Education Teachers, Secondary School",56580,1.563,3,48340-60600,252058,25 +Insurance Sales Agents,56590,2.724,3,48340-60600,413021,41 +First-Line Supervisors of Correctional Officers,56760,1.533,3,48340-60600,331011,33 +Postal Service Mail Carriers,56760,1.883,3,48340-60600,435052,43 +"Coating, Painting, and Spraying Machine Setters, Operators, and Tenders",57130,0.335,3,48340-60600,519124,51 +Industrial Machinery Mechanics,57310,0.9,3,48340-60600,499041,49 +Architectural and Civil Drafters,57370,0.356,3,48340-60600,173011,17 +Mental Health and Substance Abuse Social Workers,57390,0.556,3,48340-60600,211023,21 +Automotive Body and Related Repairers,57560,0.668,3,48340-60600,493021,49 +Clergy,58090,0.443,3,48340-60600,212011,21 +Interior Designers,58180,0.35,3,48340-60600,271025,27 +Machinists,58210,0.724,3,48340-60600,514041,51 +Tax Preparers,58260,0.687,3,48340-60600,132082,13 +"First-Line Supervisors of Farming, Fishing, and Forestry Workers",58290,0.492,3,48340-60600,451011,45 +Electricians,58630,6.591,3,48340-60600,472111,47 +"Special Education Teachers, Middle School",58640,0.676,3,48340-60600,252057,25 +"Opticians, Dispensing",59090,0.785,3,48340-60600,292081,29 +"Elementary School Teachers, Except Special Education",59260,9.224,3,48340-60600,252021,25 +"Claims Adjusters, Examiners, and Investigators",59620,0.756,3,48340-60600,131031,13 +Paralegals and Legal Assistants,59660,1.935,3,48340-60600,232011,23 +First-Line Supervisors of Office and Administrative Support Workers,59990,8.594,3,48340-60600,431011,43 +"Sales Representatives of Services, Except Advertising, Insurance, Financial Services, and Travel",60010,7.423,3,48340-60600,413091,41 +"Educational, Guidance, and Career Counselors and Advisors",60320,3.561,3,48340-60600,211012,21 +"Sales Representatives, Wholesale and Manufacturing, Except Technical and Scientific Products",60390,4.374,3,48340-60600,414012,41 +"Secondary School Teachers, Except Special and Career/Technical Education",60600,7.238,3,48340-60600,252031,25 +Interpreters and Translators,60640,NA,4,60640-86950,273091,27 +Computer User Support Specialists,60700,3.73,4,60640-86950,151232,15 +"Meeting, Convention, and Event Planners",60780,2.051,4,60640-86950,131121,13 +"Special Education Teachers, Kindergarten and Elementary School",60950,1.475,4,60640-86950,252052,25 +Licensed Practical and Licensed Vocational Nurses,61120,4.398,4,60640-86950,292061,29 +Insurance Underwriters,61130,0.544,4,60640-86950,132053,13 +Postal Service Clerks,61150,0.631,4,60640-86950,435051,43 +Healthcare Social Workers,61230,1.43,4,60640-86950,211022,21 +Web and Digital Interface Designers,61610,0.789,4,60640-86950,151255,15 +Power Plant Operators,61640,0.36,4,60640-86950,518013,51 +Athletic Trainers,61670,0.403,4,60640-86950,299091,29 +Fundraisers,61940,1.936,4,60640-86950,131131,13 +"Medical Scientists, Except Epidemiologists",61940,5.475,4,60640-86950,191042,19 +Writers and Authors,62120,0.535,4,60640-86950,273043,27 +Editors,62250,1.85,4,60640-86950,273041,27 +Dietitians and Nutritionists,62280,0.388,4,60640-86950,291031,29 +"Middle School Teachers, Except Special and Career/Technical Education",62290,5.445,4,60640-86950,252022,25 +Physical Therapist Assistants,62390,0.712,4,60640-86950,312021,31 +"Career/Technical Education Teachers, Secondary School",62720,0.975,4,60640-86950,252032,25 +Food Service Managers,62750,1.386,4,60640-86950,119051,11 +Surveyors,62830,0.381,4,60640-86950,171022,17 +Surgical Technologists,62880,1.202,4,60640-86950,292055,29 +"Environmental Science and Protection Technicians, Including Health",63070,0.473,4,60640-86950,194042,19 +"Business Operations Specialists, All Other",63250,6.667,4,60640-86950,131199,13 +"Property, Real Estate, and Community Association Managers",63320,1.377,4,60640-86950,119141,11 +Landscape Architects,63440,0.498,4,60640-86950,171012,17 +Advertising Sales Agents,63490,0.575,4,60640-86950,413011,41 +Construction and Building Inspectors,64170,0.816,4,60640-86950,474011,47 +Electrical and Electronic Engineering Technologists and Technicians,64200,1.04,4,60640-86950,173023,17 +Audio and Video Technicians,64200,0.657,4,60640-86950,274011,27 +"First-Line Supervisors of Protective Service Workers, All Other",64240,0.289,4,60640-86950,331099,33 +Executive Secretaries and Executive Administrative Assistants,64280,3.265,4,60640-86950,436011,43 +Compliance Officers,65320,2.265,4,60640-86950,131041,13 +Cost Estimators,65500,1.413,4,60640-86950,131051,13 +"First-Line Supervisors of Mechanics, Installers, and Repairers",65680,3.338,4,60640-86950,491011,49 +"Career/Technical Education Teachers, Postsecondary",65980,0.589,4,60640-86950,251194,25 +Urban and Regional Planners,66340,0.428,4,60640-86950,193051,19 +Computer Network Support Specialists,66610,0.821,4,60640-86950,151231,15 +Training and Development Specialists,67810,2.876,4,60640-86950,131151,13 +Market Research Analysts and Marketing Specialists,67940,6.102,4,60640-86950,131161,13 +"Compensation, Benefits, and Job Analysis Specialists",67990,1.161,4,60640-86950,131141,13 +First-Line Supervisors of Production and Operating Workers,68380,1.97,4,60640-86950,511011,51 +"Telecommunications Equipment Installers and Repairers, Except Line Installers",68730,0.992,4,60640-86950,492022,49 +Foresters,69490,0.3,4,60640-86950,191032,19 +Loan Officers,72050,1.433,4,60640-86950,132072,13 +Logisticians,72890,0.949,4,60640-86950,131081,13 +Human Resources Specialists,72990,5.741,4,60640-86950,131071,13 +Librarians and Media Collections Specialists,73330,2.281,4,60640-86950,254022,25 +Radiologic Technologists and Technicians,74140,1.447,4,60640-86950,292034,29 +First-Line Supervisors of Construction Trades and Extraction Workers,74270,6.558,4,60640-86950,471011,47 +Buyers and Purchasing Agents,74480,3.227,4,60640-86950,131020,13 +Lodging Managers,75270,0.353,4,60640-86950,119081,11 +Occupational Health and Safety Specialists,75590,0.601,4,60640-86950,195011,19 +Accountants and Auditors,78820,10.464,4,60640-86950,132011,13 +"Financial Specialists, All Other",79000,1.409,4,60640-86950,132099,13 +Art Directors,79210,0.327,4,60640-86950,271011,27 +Bioengineers and Biomedical Engineers,79730,0.409,4,60640-86950,172031,17 +"Healthcare Practitioners and Technical Workers, All Other",79890,0.385,4,60640-86950,299099,29 +"Biological Scientists, All Other",80140,0.493,4,60640-86950,191029,19 +Chemists,80520,0.687,4,60640-86950,192031,19 +Respiratory Therapists,80550,1.086,4,60640-86950,291126,29 +First-Line Supervisors of Non-Retail Sales Workers,80610,1.771,4,60640-86950,411012,41 +Gas Plant Operators,81100,0.3,4,60640-86950,518092,51 +"Education Administrators, All Other",81130,0.761,4,60640-86950,119039,11 +Instructional Coordinators,81130,2.5,4,60640-86950,259031,25 +Registered Nurses,81510,28.108,4,60640-86950,291141,29 +Management Analysts,82990,6.209,4,60640-86950,131111,13 +Electrical Power-Line Installers and Repairers,83280,0.639,4,60640-86950,499051,49 +Labor Relations Specialists,84210,0.325,4,60640-86950,131075,13 +Civil Engineers,85570,1.695,4,60640-86950,172051,17 +Database Administrators,85660,0.717,4,60640-86950,151242,15 +Clinical and Counseling Psychologists,86950,0.672,4,60640-86950,193033,19 +Budget Analysts,88050,0.406,5,88050-238990,132031,13 +First-Line Supervisors of Police and Detectives,88110,0.932,5,88050-238990,331012,33 +Web Developers,88120,1.104,5,88050-238990,151254,15 +Technical Writers,88120,0.388,5,88050-238990,273042,27 +Speech-Language Pathologists,89120,0.824,5,88050-238990,291127,29 +"Architects, Except Landscape and Naval",89590,1.385,5,88050-238990,171011,17 +Mechanical Engineers,89600,1.232,5,88050-238990,172141,17 +Social and Community Service Managers,90700,0.986,5,88050-238990,119151,11 +Personal Financial Advisors,91880,2.097,5,88050-238990,132052,13 +Dental Hygienists,92000,1.173,5,88050-238990,291292,29 +"Environmental Scientists and Specialists, Including Health",92940,0.513,5,88050-238990,192041,19 +Project Management Specialists,93110,7.311,5,88050-238990,131082,13 +Software Quality Assurance Analysts and Testers,93820,1.596,5,88050-238990,151253,15 +Network and Computer Systems Administrators,95650,2.628,5,88050-238990,151244,15 +Occupational Therapists,96380,1.096,5,88050-238990,291122,29 +Computer Programmers,97150,0.385,5,88050-238990,151251,15 +Operations Research Analysts,97430,0.426,5,88050-238990,152031,15 +Marriage and Family Therapists,98860,0.353,5,88050-238990,211013,21 +Industrial Engineers,99750,0.615,5,88050-238990,172112,17 +Physical Therapists,99820,2.504,5,88050-238990,291123,29 +Financial and Investment Analysts,99860,1.895,5,88050-238990,132051,13 +Electrical Engineers,99890,1.149,5,88050-238990,172071,17 +"Education Administrators, Kindergarten through Secondary",100280,2.415,5,88050-238990,119032,11 +"Sales Representatives, Wholesale and Manufacturing, Technical and Scientific Products",100550,0.76,5,88050-238990,414011,41 +"Electronics Engineers, Except Computer",101040,0.933,5,88050-238990,172072,17 +Computer Systems Analysts,101130,4.067,5,88050-238990,151211,15 +Construction Managers,101490,2.146,5,88050-238990,119021,11 +Administrative Services Managers,101810,1.628,5,88050-238990,113012,11 +Natural Sciences Managers,102910,0.609,5,88050-238990,119121,11 +Physicists,103480,0.279,5,88050-238990,192012,19 +"Transportation, Storage, and Distribution Managers",104080,0.496,5,88050-238990,113071,11 +"Nursing Instructors and Teachers, Postsecondary",104270,0.905,5,88050-238990,251072,25 +Industrial Production Managers,105020,0.371,5,88050-238990,113051,11 +General and Operations Managers,105030,18.76,5,88050-238990,111021,11 +Facilities Managers,105610,0.773,5,88050-238990,113013,11 +Veterinarians,105990,0.857,5,88050-238990,291131,29 +"English Language and Literature Teachers, Postsecondary",108000,1.572,5,88050-238990,251123,25 +Information Security Analysts,109480,1.746,5,88050-238990,151212,15 +Astronomers,111020,0.692,5,88050-238990,192011,19 +"Computer Occupations, All Other",111610,1.177,5,88050-238990,151299,15 +"Engineers, All Other",111610,0.432,5,88050-238990,172199,17 +"Legal Support Workers, All Other",112440,0.329,5,88050-238990,232099,23 +"Social Scientists and Related Workers, All Other",114900,3.345,5,88050-238990,193099,19 +Computer Network Architects,115700,1,5,88050-238990,151241,15 +Computer and Information Research Scientists,117320,0.32,5,88050-238990,151221,15 +Data Scientists,117410,1.244,5,88050-238990,152051,15 +"Physical Scientists, All Other",118540,0.711,5,88050-238990,192099,19 +Training and Development Managers,119870,0.409,5,88050-238990,113131,11 +Software Developers,120310,13.029,5,88050-238990,151252,15 +Physician Assistants,123980,0.75,5,88050-238990,291071,29 +Medical and Health Services Managers,124910,3.133,5,88050-238990,119111,11 +Database Architects,125010,0.684,5,88050-238990,151243,15 +Fundraising Managers,127620,0.652,5,88050-238990,112033,11 +"Health Specialties Teachers, Postsecondary",129110,NA,5,88050-238990,251071,25 +"Biological Science Teachers, Postsecondary",130650,1.026,5,88050-238990,251042,25 +Sales Managers,131380,1.826,5,88050-238990,112022,11 +Public Relations Managers,132410,1.036,5,88050-238990,112032,11 +"Managers, All Other",133300,3.452,5,88050-238990,119199,11 +Purchasing Managers,133890,0.608,5,88050-238990,113061,11 +Nurse Practitioners,134870,4.45,5,88050-238990,291171,29 +Pharmacists,136340,2.816,5,88050-238990,291051,29 +Human Resources Managers,137610,1.361,5,88050-238990,113121,11 +Lawyers,140360,3.434,5,88050-238990,231011,23 +Architectural and Engineering Managers,143540,0.788,5,88050-238990,119041,11 +Financial Managers,152780,3.853,5,88050-238990,113031,11 +Marketing Managers,155010,1.512,5,88050-238990,112021,11 +Computer and Information Systems Managers,155320,3.733,5,88050-238990,113021,11 +"Dentists, General",169950,0.691,5,88050-238990,291021,29 +"Physicians, All Other",206860,9.069,5,88050-238990,291229,29 +Family Medicine Physicians,210970,0.663,5,88050-238990,291215,29 +Nurse Anesthetists,224290,0.815,5,88050-238990,291151,29 +Chief Executives,238990,1.225,5,88050-238990,111011,11 diff --git a/OrangeDot6_files/microdata/scripts/data_prep_bls.R b/OrangeDot6_files/microdata/scripts/data_prep_bls.R index 54399b3..acb851d 100644 --- a/OrangeDot6_files/microdata/scripts/data_prep_bls.R +++ b/OrangeDot6_files/microdata/scripts/data_prep_bls.R @@ -4,13 +4,16 @@ # https://data.bls.gov/oes/#/geoOcc/Multiple%20occupations%20for%20one%20geographical%20area # Setup ---- +library(here) library(tidyverse) library(readxl) library(janitor) +# Set WD +setwd(here("OrangeDot6_files")) # Data ---- -bls <- read_excel("downloads/OES_Report.xlsx", skip = 5) %>% +bls <- read_excel("data/tempdata/OES_Report.xlsx", skip = 5) %>% clean_names() # Prep ---- @@ -62,9 +65,10 @@ bls_catchall_occ <- bls_catchall_occ %>% # To generate tables of occupations and median wages by median wage bin occupation_wages <- bls_occ %>% arrange(annual_median_wage_2) %>% - select(occupation, annual_median_wage_2, employment_per_1_000_jobs, median_wage_bin, median_wage_bin_label) + mutate(soc_group_num = substr(soc_code, start=1, stop=2)) %>% + select(occupation, annual_median_wage_2, employment_per_1_000_jobs, median_wage_bin, median_wage_bin_label, soc_code, soc_group_num) -write_csv(occupation_wages, file = "data/occupations_by_wagebin.csv") +write_csv(occupation_wages, file = "microdata/data/occupations_by_wagebin.csv") # Save ---- diff --git a/OrangeDot6_files/visuals/visuals-microdata.Rmd b/OrangeDot6_files/visuals/visuals-microdata.Rmd index de956c6..15f8dc9 100644 --- a/OrangeDot6_files/visuals/visuals-microdata.Rmd +++ b/OrangeDot6_files/visuals/visuals-microdata.Rmd @@ -550,27 +550,62 @@ workers_by_medianwages %>% plot.caption = element_text(size = 12)) ``` + ```{r occupations_by_wagebin, fig.width = 6, fig.height = 10, fig.retina = 2} occupations_by_wagebin <- read_csv("../microdata/data/occupations_by_wagebin.csv") -# occupation_appendix <- occupations_by_wagebin %>% -# filter(employment_per_1_000_jobs > 1) %>% -# mutate(median_wage_bin_label = factor(median_wage_bin_label, levels = c("25610-37760", "37860-48320", "48340-60600", "60640-86950", "88050-238990"), labels = c("$25,610 - $37,760", "$37,860 - $48,320", "$48,340 - $60,600", "$60,640 - $86,950", "$88,050 - $238,990")), -# employment_per_1_000_jobs = round(employment_per_1_000_jobs,1)) -# -# write.xlsx(occupation_appendix, "OccupationsByWageBin.xlsx") - occupations_filtered <- occupations_by_wagebin %>% # filter(employment_per_1_000_jobs > 8) %>% - filter(occupation %in% c("Fast Food and Counter Workers", "Cashiers", "Home Health and Personal Care Aides", - "Customer Service Representatives", "Construction Laborers", "Light Truck Drivers", "Maintenance and Repair Workers, General", "Elementary School Teachers, Except Special Education -", "Electricians", "Medical Records Specialists", "Office and Administrative Support Workers, All Other", "Registered Nurses", "Radiologic Technologists and Technicians", "Computer User Support Specialists", "General and Operations Managers", "Construction Managers", "Dental Hygienists")) %>% - mutate(median_wage_bin_label = factor(median_wage_bin_label, levels = c("25610-37760", "37860-48320", "48340-60600", "60640-86950", "88050-238990"), labels = c("$25,610 - $37,760", "$37,860 - $48,320", "$48,340 - $60,600", "$60,640 - $86,950", "$88,050 - $238,990"))) + filter(occupation %in% c("Fast Food and Counter Workers", "Cashiers", "Home Health and Personal Care Aides", "Childcare Workers", + "Customer Service Representatives", "Construction Laborers", "Maintenance and Repair Workers, General", + "Emergency Medical Technicians", "Nursing Assistants", + "Healthcare Support Workers, All Other", "Medical Assistants", + "Bus Drivers, Transit and Intercity", "Dental Assistants", "Bus Drivers, School", + "Automotive Service Technicians and Mechanics", "Heavy and Tractor-Trailer Truck Drivers", + "Carpenters", "Production, Planning, and Expediting Clerks", + "Graphic Designers", "Plumbers, Pipefitters, and Steamfitters", + "Electricians", "Medical Records Specialists", "Police and Sheriff's Patrol Officers", + "Clinical Laboratory Technologists and Technicians", "Elementary School Teachers, Except Special Education", + "Secondary School Teachers, Except Special and Career/Technical Education", + "Office and Administrative Support Workers, All Other", "Registered Nurses", + "Radiologic Technologists and Technicians", "Computer User Support Specialists", + "Accountants and Auditors", "Nurse Practitioners", + "General and Operations Managers", "Construction Managers", "Dental Hygienists", + "Heating, Air Conditioning, and Refrigeration Mechanics and Installers", + "Electrical and Electronic Engineering Technologists and Technicians", + "Licensed Practical and Licensed Vocational Nurses", "Surgical Technologists")) %>% +# filter(occupation %in% c("Fast Food and Counter Workers", "Cashiers", "Home Health and Personal Care Aides", +# "Customer Service Representatives", "Construction Laborers", "Light Truck Drivers", "Maintenance and Repair Workers, General", "Elementary School Teachers, Except Special Education +# ", "Electricians", "Medical Records Specialists", "Office and Administrative Support Workers, All Other", "Registered Nurses", "Radiologic Technologists and Technicians", "Computer User Support Specialists", "General and Operations Managers", "Construction Managers", "Dental Hygienists")) %>% + mutate(median_wage_bin_label = factor(median_wage_bin_label, levels = c("25610-37760", "37860-48320", "48340-60600", "60640-86950", "88050-238990"), labels = c("$25,610 - $37,760", "$37,860 - $48,320", "$48,340 - $60,600", "$60,640 - $86,950", "$88,050 - $238,990")), + job_group = case_when(soc_group_num == "11" ~ "Management", +soc_group_num == "13" ~ "Business and Financial Operations", +soc_group_num == "15" ~ "Computer and Mathematical", +soc_group_num == "17" ~ "Architecture and Engineering", +soc_group_num == "19" ~ "Life, Physical, and Social Science", +soc_group_num == "21" ~ "Community and Social Service", +soc_group_num == "23" ~ "Legal", +soc_group_num == "25" ~ "Educational Instruction and Library", +soc_group_num == "27" ~ "Arts, Design, Entertainment, Sports, and Media", +soc_group_num == "29" ~ "Healthcare Practitioners and Technical", +soc_group_num == "31" ~ "Healthcare Support", +soc_group_num == "33" ~ "Protective Service", +soc_group_num == "35" ~ "Food Preparation and Serving Related", +soc_group_num == "37" ~ "Building and Grounds Cleaning and Maintenance", +soc_group_num == "39" ~ "Personal Care and Service", +soc_group_num == "41" ~ "Sales and Related", +soc_group_num == "43" ~ "Office and Administrative Support", +soc_group_num == "45" ~ "Farming, Fishing, and Forestry", +soc_group_num == "47" ~ "Construction and Extraction", +soc_group_num == "49" ~ "Installation, Maintenance, and Repair", +soc_group_num == "51" ~ "Production", +soc_group_num == "53" ~ "Transportation and Material Moving" +)) occupations_filtered %>% mutate(employment_per_1_000_jobs = employment_per_1_000_jobs/100, color = "") %>% - select(c(occupation, annual_median_wage_2, color, employment_per_1_000_jobs, median_wage_bin)) %>% + select(c(occupation, annual_median_wage_2, color, employment_per_1_000_jobs, job_group, median_wage_bin)) %>% gt() %>% # tab_row_group(label = "Occupations Earning $88,050 - $238,990", # rows = 14:16) %>% @@ -609,7 +644,8 @@ occupations_filtered %>% annual_median_wage_2 = "Annual Median Wage", color = "", employment_per_1_000_jobs = "Employment Rate", - median_wage_bin = "" + median_wage_bin = "", + job_group = "Occupation Group" ) %>% tab_style( style = cell_text(align = "center", v_align = "middle"), @@ -620,9 +656,17 @@ occupations_filtered %>% locations = cells_title(groups = "title") ) %>% tab_footnote( - footnote = "Employment rate per 1,000 jobs in the Charlottesville Metro Area", + footnote = "The annual median wage is the boundary between the highest and lowest paid workers in a given occupation. Half of the workers in a given occupation earn more than the median wage, and half the workers earn less than the median wage.", + locations = cells_column_labels(columns = annual_median_wage_2) + ) %>% + tab_footnote( + footnote = "Employment rate is the number of jobs (employment) in the given occupation per 1,000 jobs in the Charlottesville Metro Area", locations = cells_column_labels(columns = employment_per_1_000_jobs) ) %>% + tab_footnote( + footnote = "Major occupation groups defined by the Standard Occupational Classification (SOC) system, used by Federal statistical agencies to classify workers and jobs into occupational categories for the purpose of collecting, calculating, analyzing, or disseminating data.", + locations = cells_column_labels(columns = job_group) + ) %>% tab_header( title = "Selection of Occupations by Annual Median Wage Earned in the Charlottesville Metro Area" ) %>% @@ -633,20 +677,108 @@ occupations_filtered %>% ## Appendix +```{r occupations_median_age_by_job_group} +occupations_median_age_by_job_group <- read_csv("../microdata/data/occupation_wages_catchallcategories.csv") + +occupations_median_age_by_job_group %>% + arrange(annual_median_wage_2) %>% + select(occupation, hourly_mean_wage, annual_mean_wage_2, hourly_median_wage, annual_median_wage_2, employment_per_1_000_jobs, median_wage_bin) %>% + mutate(employment_per_1_000_jobs = employment_per_1_000_jobs/100, + color = "") %>% + select(c(occupation, hourly_mean_wage, annual_mean_wage_2, hourly_median_wage, annual_median_wage_2, color, employment_per_1_000_jobs, median_wage_bin)) %>% + gt() %>% + data_color( + columns = median_wage_bin, + target_columns = color, + direction = "column", + palette = c("#DE8A5A", "#EDBB8A", "#F6EDBD","#B4C8A8", "#70A494"), + ) %>% + fmt_currency( + columns = 2:5, + currency = currency( + html = "$", + default = "$" + ), + decimals = 2 + ) %>% + fmt_percent( + columns = employment_per_1_000_jobs, + decimals = 0 + ) %>% + cols_hide(columns = c(median_wage_bin)) %>% + cols_label( + occupation = "Occupation Group", + hourly_mean_wage = "Hourly Mean (Average) Wage", + annual_mean_wage_2 = "Annual Mean (Average) Wage", + hourly_median_wage = "Hourly Median Wage", + annual_median_wage_2 = "Annual Median Wage", + color = "", + employment_per_1_000_jobs = "Employment Rate", + median_wage_bin = "" + ) %>% + tab_style( + style = cell_text(align = "center", v_align = "middle"), + locations = list(cells_column_labels(2:4), cells_body(2:4)) + ) %>% + tab_footnote( + footnote = "The annual median wage is the boundary between the highest and lowest paid workers in a given occupation. Half of the workers in a given occupation earn more than the median wage, and half the workers earn less than the median wage.", + locations = cells_column_labels(columns = annual_median_wage_2) + ) %>% + tab_footnote( + footnote = "Employment rate is the number of jobs (employment) in the given occupation per 1,000 jobs in the Charlottesville Metro Area", + locations = cells_column_labels(columns = employment_per_1_000_jobs) + ) %>% + tab_footnote( + footnote = "Major occupation groups defined by the Standard Occupational Classification (SOC) system, used by Federal statistical agencies to classify workers and jobs into occupational categories for the purpose of collecting, calculating, analyzing, or disseminating data.", + locations = cells_column_labels(columns = occupation) + ) %>% + tab_header( + title = "Occupation Groups by Mean (Average) and Median Wages Earned in the Charlottesville Metro Area" + ) %>% + tab_source_note( + source_note = "Data Source: U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics; May 2023" + ) + + +``` + ```{r occupations_by_wagebin_appendix, fig.width = 6, fig.height = 10, fig.retina = 2} occupation_appendix <- occupations_by_wagebin %>% filter(employment_per_1_000_jobs > 1) %>% mutate(median_wage_bin_label = factor(median_wage_bin_label, levels = c("25610-37760", "37860-48320", "48340-60600", "60640-86950", "88050-238990"), labels = c("$25,610 - $37,760", "$37,860 - $48,320", "$48,340 - $60,600", "$60,640 - $86,950", "$88,050 - $238,990")), - employment_per_1_000_jobs = round(employment_per_1_000_jobs,1)) + employment_per_1_000_jobs = round(employment_per_1_000_jobs,1), + job_group = case_when(soc_group_num == "11" ~ "Management", +soc_group_num == "13" ~ "Business and Financial Operations", +soc_group_num == "15" ~ "Computer and Mathematical", +soc_group_num == "17" ~ "Architecture and Engineering", +soc_group_num == "19" ~ "Life, Physical, and Social Science", +soc_group_num == "21" ~ "Community and Social Service", +soc_group_num == "23" ~ "Legal", +soc_group_num == "25" ~ "Educational Instruction and Library", +soc_group_num == "27" ~ "Arts, Design, Entertainment, Sports, and Media", +soc_group_num == "29" ~ "Healthcare Practitioners and Technical", +soc_group_num == "31" ~ "Healthcare Support", +soc_group_num == "33" ~ "Protective Service", +soc_group_num == "35" ~ "Food Preparation and Serving Related", +soc_group_num == "37" ~ "Building and Grounds Cleaning and Maintenance", +soc_group_num == "39" ~ "Personal Care and Service", +soc_group_num == "41" ~ "Sales and Related", +soc_group_num == "43" ~ "Office and Administrative Support", +soc_group_num == "45" ~ "Farming, Fishing, and Forestry", +soc_group_num == "47" ~ "Construction and Extraction", +soc_group_num == "49" ~ "Installation, Maintenance, and Repair", +soc_group_num == "51" ~ "Production", +soc_group_num == "53" ~ "Transportation and Material Moving" +)) # write.xlsx(occupation_appendix, "OccupationsByWageBin.xlsx") occupation_appendix %>% mutate(employment_per_1_000_jobs = employment_per_1_000_jobs/100, color = "") %>% - select(c(occupation, annual_median_wage_2, color, employment_per_1_000_jobs, median_wage_bin)) %>% + select(c(occupation, annual_median_wage_2, color, employment_per_1_000_jobs, job_group, median_wage_bin)) %>% gt() %>% data_color( columns = median_wage_bin, @@ -675,21 +807,25 @@ occupation_appendix %>% annual_median_wage_2 = "Annual Median Wage", color = "", employment_per_1_000_jobs = "Employment Rate", - median_wage_bin = "" + median_wage_bin = "", + job_group = "Occupation Group" ) %>% tab_style( style = cell_text(align = "center", v_align = "middle"), locations = list(cells_column_labels(2:4), cells_body(2:4)) ) %>% - tab_style( - style = cell_text(v_align = "middle"), - locations = list(cells_column_labels(1)) - ) %>% - tab_options(table.font.size="9px") %>% tab_footnote( - footnote = "Employment rate per 1,000 jobs in the Charlottesville Metro Area", + footnote = "The annual median wage is the boundary between the highest and lowest paid workers in a given occupation. Half of the workers in a given occupation earn more than the median wage, and half the workers earn less than the median wage.", + locations = cells_column_labels(columns = annual_median_wage_2) + ) %>% + tab_footnote( + footnote = "Employment rate is the number of jobs (employment) in the given occupation per 1,000 jobs in the Charlottesville Metro Area", locations = cells_column_labels(columns = employment_per_1_000_jobs) ) %>% + tab_footnote( + footnote = "Major occupation groups defined by the Standard Occupational Classification (SOC) system, used by Federal statistical agencies to classify workers and jobs into occupational categories for the purpose of collecting, calculating, analyzing, or disseminating data.", + locations = cells_column_labels(columns = job_group) + ) %>% tab_header( title = "Occupations by Annual Median Wage Earned in the Charlottesville Metro Area" ) %>% @@ -698,3 +834,54 @@ occupation_appendix %>% ) ``` +```{r family_income_summary, fig.width = 7.25, fig.height = 6, fig.retina = 2} + +family_income_summary <- read_csv("../microdata/data/families_below_ess_by_incomes.csv") %>% + mutate(group = case_when(income_bins %in% c("$0 to $9,999","$10,000 to $19,999") ~ "Less than $20K", + income_bins %in% c("$20,000 to $29,999","$30,000 to $39,999", "$40,000 to $49,999") ~ "Between $20K - $50K", + income_bins == "$50,000+" ~ "$50,000+")) + +family_income_summary %>% + group_by(group) %>% + summarise(count = sum(count), + percent = sum(percent)) %>% + ungroup() %>% + mutate(group = factor(group, levels = c("Less than $20K", "Between $20K - $50K", "$50,000+"))) %>% + ggplot(aes(x = count, y = group, fill = group)) + + geom_bar(stat = "identity") + + geom_text(aes(label = paste0(prettyNum(round(count, -1), big.mark=",", preserve.width="none"), " families\n(", round(percent, 0), "%)")), + vjust = -0.35, + # hjust = -0.1, + size = 5) + + scale_y_discrete(name = "") + + scale_x_continuous(name = "Number of Families", + breaks = seq(0, 10000, by = 1000), + label=comma, + expand = expansion(mult = c(0, .16)) + ) + + scale_fill_manual(values = c("#EDBB8A", "#DE8A5A", "#B4C8A8"))+ + coord_flip()+ + labs( + # title = "Annual Incomes for Families Earning Below the Self-Sufficiency Standard", + # subtitle = geography_label, + caption = acs_pums) + + theme_minimal() + + theme(legend.title=element_blank(), + legend.position = "none", + # legend.location = "plot", + legend.justification="center", + legend.text = element_text(size = 12), + panel.grid.major = element_blank(), + axis.ticks = element_blank(), + axis.title.y = element_blank(), + axis.text.y.left = element_blank(), + + panel.grid.minor = element_blank(), + plot.title.position= "plot", + plot.caption.position = "plot", + axis.text.y = element_text(color = "black", size = 14), + text = element_text(size = 14), + axis.text.x = element_text(size=16), + plot.title = element_text(size = 20), + plot.caption = element_text(size = 12)) +``` \ No newline at end of file diff --git a/OrangeDot6_files/visuals/visuals-microdata.docx b/OrangeDot6_files/visuals/visuals-microdata.docx index 6a54cda..515a83a 100644 Binary files a/OrangeDot6_files/visuals/visuals-microdata.docx and b/OrangeDot6_files/visuals/visuals-microdata.docx differ diff --git a/OrangeDot6_files/visuals/visuals-microdata.html b/OrangeDot6_files/visuals/visuals-microdata.html index d947b5e..788e43a 100644 --- a/OrangeDot6_files/visuals/visuals-microdata.html +++ b/OrangeDot6_files/visuals/visuals-microdata.html @@ -363,7 +363,7 @@

Orange Dot 6.0 - Regional Microdata

-

+

@@ -768,7 +768,7 @@

Orange Dot 6.0 - Regional Microdata

- + @@ -807,6 +807,10 @@

Orange Dot 6.0 - Regional Microdata

+ + + + @@ -815,6 +819,10 @@

Orange Dot 6.0 - Regional Microdata

+ + + + @@ -823,6 +831,14 @@

Orange Dot 6.0 - Regional Microdata

+ + + + + + + + @@ -846,12 +862,12 @@

Orange Dot 6.0 - Regional Microdata

- + - + @@ -859,6 +875,1193 @@

Orange Dot 6.0 - Regional Microdata

Occupations by Annual Median Wage1Selection of Occupations by Annual Median Wage Earned in the Charlottesville Metro Area1
$44,210.00 10%
Heavy and Tractor-Trailer Truck Drivers$48,610.006%
Office and Administrative Support Workers, All Other $48,900.00 $54,390.00 2%
Heating, Air Conditioning, and Refrigeration Mechanics and Installers$56,480.003%
Electricians $58,630.00 $60,700.00 4%
Licensed Practical and Licensed Vocational Nurses$61,120.004%
Electrical and Electronic Engineering Technologists and Technicians$64,200.001%
Radiologic Technologists and Technicians $74,140.00
U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics; May 2023Data Source: U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics; May 2023
1 See Appendix for more occupations1 See appendix for more occupations by annual median wage
2 Employment rate per 1,000 jobs in the Charlottesville Metro Area
+
+

Appendix

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Occupations by Annual Median Wage Earned in the Charlottesville Metro Area
OccupationAnnual Median WageEmployment Rate1
Home Health and Personal Care Aides$26,720.0016%
Hosts and Hostesses, Restaurant, Lounge, and Coffee Shop$27,570.003%
Childcare Workers$28,390.003%
Amusement and Recreation Attendants$28,540.002%
Cashiers$28,580.0021%
Cooks, Fast Food$28,840.004%
Dining Room and Cafeteria Attendants and Bartender Helpers$28,900.003%
Lifeguards, Ski Patrol, and Other Recreational Protective Service Workers$29,040.001%
Fast Food and Counter Workers$29,190.0024%
Food Preparation Workers$29,260.005%
Dishwashers$29,330.004%
Food Servers, Nonrestaurant$29,370.002%
Bakers$29,370.001%
Animal Caretakers$29,680.003%
Laundry and Dry-Cleaning Workers$29,790.001%
Retail Salespersons$29,940.0022%
Hotel, Motel, and Resort Desk Clerks$30,010.003%
Janitors and Cleaners, Except Maids and Housekeeping Cleaners$30,180.009%
Cleaners of Vehicles and Equipment$30,690.001%
Demonstrators and Product Promoters$30,740.001%
Packers and Packagers, Hand$30,770.001%
Shuttle Drivers and Chauffeurs$31,990.002%
Parts Salespersons$32,040.001%
Maids and Housekeeping Cleaners$32,770.0012%
Waiters and Waitresses$33,060.0018%
Farmworkers and Laborers, Crop, Nursery, and Greenhouse$33,250.001%
Recreation Workers$33,590.002%
Stockers and Order Fillers$33,740.0014%
Veterinary Assistants and Laboratory Animal Caretakers$33,890.002%
Receptionists and Information Clerks$34,160.007%
Substitute Teachers, Short-Term$34,640.005%
Cooks, Restaurant$34,950.0011%
Teaching Assistants, Except Postsecondary$35,250.009%
Laborers and Freight, Stock, and Material Movers, Hand$35,460.007%
Cooks, Institution and Cafeteria$36,210.004%
Miscellaneous Assemblers and Fabricators$36,480.002%
Landscaping and Groundskeeping Workers$36,700.008%
Customer Service Representatives$36,710.0013%
Emergency Medical Technicians$36,940.002%
Merchandise Displayers and Window Trimmers$37,010.001%
Hairdressers, Hairstylists, and Cosmetologists$37,130.002%
Counter and Rental Clerks$37,270.003%
Nursing Assistants$37,400.0015%
Preschool Teachers, Except Special Education$37,610.002%
Shipping, Receiving, and Inventory Clerks$37,760.003%
Healthcare Support Workers, All Other$37,900.002%
Security Guards$37,920.003%
Driver/Sales Workers$38,000.003%
Medical Secretaries and Administrative Assistants$38,200.005%
Industrial Truck and Tractor Operators$38,270.001%
Construction Laborers$38,290.006%
Electrical, electronic, and electromechanical assemblers, except coil winders, tapers, and finishers$38,290.002%
Tellers$38,410.001%
Firefighters$38,990.003%
Medical Assistants$39,500.004%
Social and Human Service Assistants$39,680.003%
Office Clerks, General$39,990.0018%
Bus Drivers, Transit and Intercity$41,120.003%
Light Truck Drivers$41,390.004%
Bartenders$42,640.005%
Maintenance and Repair Workers, General$44,210.0010%
Highway Maintenance Workers$44,280.001%
Pharmacy Technicians$44,480.004%
First-Line Supervisors of Food Preparation and Serving Workers$44,630.009%
Painters, Construction and Maintenance$44,810.001%
Library Technicians$44,870.001%
Billing and Posting Clerks$45,050.001%
Separating, Filtering, Clarifying, Precipitating, and Still Machine Setters, Operators, and Tenders$45,160.001%
Insurance Claims and Policy Processing Clerks$45,490.001%
Dental Assistants$45,640.002%
First-Line Supervisors of Housekeeping and Janitorial Workers$45,970.002%
First-Line Supervisors of Personal Service Workers$46,200.001%
Self-Enrichment Teachers$46,760.002%
Exercise Trainers and Group Fitness Instructors$46,810.004%
Correctional Officers and Jailers$46,840.005%
Operating Engineers and Other Construction Equipment Operators$46,970.003%
Bus Drivers, School$47,470.004%
Bookkeeping, Accounting, and Auditing Clerks$47,610.0010%
Secretaries and Administrative Assistants, Except Legal, Medical, and Executive$47,620.0012%
First-Line Supervisors of Retail Sales Workers$47,710.008%
Coaches and Scouts$47,830.002%
Real Estate Sales Agents$47,840.002%
Automotive Service Technicians and Mechanics$48,340.004%
Heavy and Tractor-Trailer Truck Drivers$48,610.006%
Inspectors, Testers, Sorters, Samplers, and Weighers$48,670.001%
Cement Masons and Concrete Finishers$48,680.002%
Carpenters$48,870.006%
Office and Administrative Support Workers, All Other$48,900.003%
Substance abuse, behavioral disorder, and mental health counselors$49,820.002%
Production, Planning, and Expediting Clerks$50,110.001%
Detectives and Criminal Investigators$50,210.001%
Bus and Truck Mechanics and Diesel Engine Specialists$51,420.001%
Biological Technicians$51,750.002%
Graphic Designers$51,920.002%
Chefs and Head Cooks$52,000.002%
Securities, Commodities, and Financial Services Sales Agents$52,070.003%
Plumbers, Pipefitters, and Steamfitters$52,090.002%
First-Line Supervisors of Transportation Workers, Except Aircraft Cargo Handling Supervisors$53,740.002%
Child, Family, and School Social Workers$53,890.002%
Medical Records Specialists$54,390.002%
Police and Sheriff's Patrol Officers$56,190.004%
Kindergarten Teachers, Except Special Education$56,310.001%
Clinical Laboratory Technologists and Technicians$56,380.002%
First-Line Supervisors of Landscaping, Lawn Service, and Groundskeeping Workers$56,380.001%
Heating, Air Conditioning, and Refrigeration Mechanics and Installers$56,480.003%
Special Education Teachers, Secondary School$56,580.002%
Insurance Sales Agents$56,590.003%
First-Line Supervisors of Correctional Officers$56,760.002%
Postal Service Mail Carriers$56,760.002%
Electricians$58,630.007%
Elementary School Teachers, Except Special Education$59,260.009%
Paralegals and Legal Assistants$59,660.002%
First-Line Supervisors of Office and Administrative Support Workers$59,990.009%
Sales Representatives of Services, Except Advertising, Insurance, Financial Services, and Travel$60,010.007%
Educational, Guidance, and Career Counselors and Advisors$60,320.004%
Sales Representatives, Wholesale and Manufacturing, Except Technical and Scientific Products$60,390.004%
Secondary School Teachers, Except Special and Career/Technical Education$60,600.007%
Computer User Support Specialists$60,700.004%
Meeting, Convention, and Event Planners$60,780.002%
Special Education Teachers, Kindergarten and Elementary School$60,950.002%
Licensed Practical and Licensed Vocational Nurses$61,120.004%
Healthcare Social Workers$61,230.001%
Fundraisers$61,940.002%
Medical Scientists, Except Epidemiologists$61,940.006%
Editors$62,250.002%
Middle School Teachers, Except Special and Career/Technical Education$62,290.005%
Food Service Managers$62,750.001%
Surgical Technologists$62,880.001%
Business Operations Specialists, All Other$63,250.007%
Property, Real Estate, and Community Association Managers$63,320.001%
Electrical and Electronic Engineering Technologists and Technicians$64,200.001%
Executive Secretaries and Executive Administrative Assistants$64,280.003%
Compliance Officers$65,320.002%
Cost Estimators$65,500.001%
First-Line Supervisors of Mechanics, Installers, and Repairers$65,680.003%
Training and Development Specialists$67,810.003%
Market Research Analysts and Marketing Specialists$67,940.006%
Compensation, Benefits, and Job Analysis Specialists$67,990.001%
First-Line Supervisors of Production and Operating Workers$68,380.002%
Loan Officers$72,050.001%
Human Resources Specialists$72,990.006%
Librarians and Media Collections Specialists$73,330.002%
Radiologic Technologists and Technicians$74,140.001%
First-Line Supervisors of Construction Trades and Extraction Workers$74,270.007%
Buyers and Purchasing Agents$74,480.003%
Accountants and Auditors$78,820.0010%
Financial Specialists, All Other$79,000.001%
Respiratory Therapists$80,550.001%
First-Line Supervisors of Non-Retail Sales Workers$80,610.002%
Instructional Coordinators$81,130.002%
Registered Nurses$81,510.0028%
Management Analysts$82,990.006%
Civil Engineers$85,570.002%
Web Developers$88,120.001%
Architects, Except Landscape and Naval$89,590.001%
Mechanical Engineers$89,600.001%
Personal Financial Advisors$91,880.002%
Dental Hygienists$92,000.001%
Project Management Specialists$93,110.007%
Software Quality Assurance Analysts and Testers$93,820.002%
Network and Computer Systems Administrators$95,650.003%
Occupational Therapists$96,380.001%
Physical Therapists$99,820.002%
Financial and Investment Analysts$99,860.002%
Electrical Engineers$99,890.001%
Education Administrators, Kindergarten through Secondary$100,280.002%
Computer Systems Analysts$101,130.004%
Construction Managers$101,490.002%
Administrative Services Managers$101,810.002%
General and Operations Managers$105,030.0019%
English Language and Literature Teachers, Postsecondary$108,000.002%
Information Security Analysts$109,480.002%
Computer Occupations, All Other$111,610.001%
Social Scientists and Related Workers, All Other$114,900.003%
Data Scientists$117,410.001%
Software Developers$120,310.0013%
Medical and Health Services Managers$124,910.003%
Biological Science Teachers, Postsecondary$130,650.001%
Sales Managers$131,380.002%
Public Relations Managers$132,410.001%
Managers, All Other$133,300.004%
Nurse Practitioners$134,870.004%
Pharmacists$136,340.003%
Human Resources Managers$137,610.001%
Lawyers$140,360.003%
Financial Managers$152,780.004%
Marketing Managers$155,010.002%
Computer and Information Systems Managers$155,320.004%
Physicians, All Other$206,860.009%
Chief Executives$238,990.001%
Data Source: U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics; May 2023
1 Employment rate per 1,000 jobs in the Charlottesville Metro Area
+
+

+