Clean Ports Survey 2: What do Bay Area youth think about the Port of Oakland and the Oakland Airport?
Getting Started
Loading in Libraries
Loading in the Data Set
Helper functions (plot theme, bar charts, theme tagging)
# ---- Making plot style ----theme_rose <-function() {theme_minimal(base_family ="serif", base_size =14) +theme(plot.background =element_rect(fill ="#F5F5F0", color =NA),panel.background =element_rect(fill ="#F5F5F0", color =NA),panel.grid.minor =element_blank(),plot.title =element_text(size =14, face ="bold"),plot.title.position ="plot",plot.subtitle =element_text(size =11, color ="gray40"),axis.text.y =element_text(margin =margin(r =10)),axis.title.x =element_text(margin =margin(t =10, b =5)) )}# ---- Horizontal bar chart with counts + percents for any single-choice question ----# order = "freq" sorts by count; "natural" sorts by the answer labels (good for 1-5 scales)plot_bar <-function(df, col, title =NULL, order =c("freq", "natural")) { order <-match.arg(order) d <- df |>transmute(answer =as.character({{ col }})) |>filter(!is.na(answer)) |>count(answer) |>mutate(pct = n /sum(n) *100) d$answer <-if (order =="freq") {fct_reorder(d$answer, d$n) } else {factor(d$answer, levels =rev(sort(unique(d$answer)))) }ggplot(d, aes(x = n, y = answer)) +geom_col(fill ="#66C2A5", width =0.7) +geom_text(aes(label =paste0(n, " (", round(pct, 1), "%)")),hjust =-0.1, family ="serif", size =4) +scale_x_continuous(expand =expansion(mult =c(0, 0.25))) +scale_y_discrete(labels =label_wrap(30)) +labs(title =str_wrap(title, 60),subtitle =paste0("n = ", sum(d$n), " responses"),x ="Count", y =NULL) +theme_rose()}# ---- Quick numbers for writing the narrative ----n_answered <-function(x) sum(!is.na(x))pct_match <-function(x, pattern) { x <-str_to_lower(x[!is.na(x)])round(100*mean(str_detect(x, pattern)), 1)}# ---- Theme tagging for free-text questions ----# patterns is a named list: theme name = regex. The FIRST matching theme wins# (same logic as case_when in Survey 1). Blank answers stay NA.unsure_rx <-paste("not (really |totally |too |very )?sure","\\bunsure\\b","uncertain","\\bidk\\b","\\bdunno\\b","(don['’]?t|do not) (really |honestly )?know","no (idea|clue)","never heard","haven['’]?t heard","not familiar","wouldn['’]?t know","^n/?a\\.?$","^none\\.?$","^nothing\\.?$","^not much\\.?$","^no\\.?$","^n$","^\\W*$", sep ="|")tag_theme <-function(text, patterns) { t <-str_to_lower(str_squish(text)) out <-ifelse(is.na(t), NA_character_, "Other")for (nm inrev(names(patterns))) { hit <-!is.na(t) &str_detect(t, patterns[[nm]]) out[hit] <- nm } out}# ---- Interactive bar + filterable table of responses (like Survey 1) ----# group_col is optional: colors the bars (e.g., by Yes/No/Unsure stance)theme_explorer <-function(df, theme_col, text_col, group_col =NULL, title ="") { d <-data.frame(Theme = df[[theme_col]], Response = df[[text_col]])if (!is.null(group_col)) d$Answer <- df[[group_col]] d <- d[!is.na(d$Response), ] sd <- SharedData$new(d) p <-if (!is.null(group_col)) {plot_ly(sd, y =~Theme, color =~Answer, colors ="Set2") } else {plot_ly(sd, y =~Theme, color =I("#66C2A5")) } p <- p |>add_histogram() |>layout(title =list(text =paste0(title, "<br><sup>Click bars to filter responses</sup>"),font =list(size =14)),xaxis =list(title ="Number of Responses"),yaxis =list(title ="", categoryorder ="total ascending"),barmode ="stack",margin =list(l =180) ) dt <-datatable(sd, rownames =FALSE,options =list(pageLength =10, dom ="ftp"),selection ="none", class ="compact stripe hover")bscols(widths =12, p, dt)}
About the Data
Survey responses were collected from June 15, 2026 through June 30, 2026. The survey was distributed via Fillout via digital and in-person outreach. We received a total of 315 responses, of which we removed 93 survey submission which had multiple long text responses that were the same as those from another survey. After data cleaning, we retained 222 responses.
Not every respondent answered every question, so each chart shows the number of responses (n) it is based on, and percentages are out of those who answered that question.
Demographic Analysis: Who filled out our survey?
A Breakdown of Survey Respondents by Age and Gender
We received 222 responses from young people ages 13 to 30. The largest group was 18–24 (40%), with 13–17 (29%) and 25–30 (32%) fairly evenly represented. Most respondents identified as female (58%) or male (38%), and about 4% identified as non-binary/gender queer or transgender, or preferred not to answer. Female respondents outnumbered male respondents in every age group.
Code
age_summary <- survey2 |>count(Age.Range) |>mutate(percent = n /sum(n) *100,label =paste0(Age.Range, "\n(", round(percent, 1), "%)"))gender_summary <- survey2 |>count(Gender.Gender.Identity) |>mutate(percent = n /sum(n) *100,label =paste0(Gender.Gender.Identity, " (", round(percent, 1), "%)"))ggplot(survey2, aes(x = Age.Range, fill = Gender.Gender.Identity)) +geom_bar() +scale_x_discrete(labels =setNames(age_summary$label, age_summary$Age.Range)) +scale_fill_brewer(palette ="Set2",labels =setNames(gender_summary$label, gender_summary$Gender.Gender.Identity)) +theme_rose() +labs(x ="Age Group", y ="Count", fill ="Gender")
A Breakdown of Survey Respondents by City
The graph below shows cities that appeared at least twice in our data. Most respondents live in Oakland (88) or San Francisco (41), together making up over half of all responses. The rest came mainly from other East Bay and Peninsula cities like Alameda, South San Francisco, and Richmond.
city_check <- survey2 |>count(Address.City, City, name ="n") |>mutate(changed =str_to_lower(str_squish(Address.City)) !=str_to_lower(City)) |>arrange(City, desc(n))
Part 1: The Port of Oakland
What is young people’s familiarity with the Port of Oakland?
Have youth heard of the Port of Oakland?
79.7% of respondents (out of 222 who answered) had heard of the Port of Oakland.
Code
plot_bar(survey2, S01.Heard.of.Port., "Have you heard of the Port of Oakland?")
What do youth who have heard of the Port know about it?
Most youth who had heard of the Port know it as a shipping and cargo hub. Many described it as one of the busiest container ports on the West Coast, where cargo ships load and unload goods from around the world, and some connected it to regional jobs and the economy. A few also knew the Port oversees Oakland Airport and Jack London Square.
Fewer mentioned pollution, but those who did were often specific. They pointed to diesel emissions, heavy truck traffic and idling, and impacts on nearby neighborhoods. Several also noted the Port is working to cut emissions through electrification and zero-emission technology. A handful raised other topics, such as the history of redlining in West Oakland and internship opportunities.
Code
know_patterns <-list("Unsure/Don't Know"=paste0(unsure_rx, "|not much|don'?t really know"),"Pollution/Environment"="pollut|emission|diesel|\\bair\\b|environment|health|asthma|toxic|carbon","Shipping/Cargo/Trade"="ship|cargo|container|trade|import|export|\\bgoods?\\b|freight|logistic|transport|international","Airport/Aviation"="airport|\\boak\\b|plane|flight|aviation","Jobs/Economy"="\\bjob|employ|econom|business|money|revenue|\\bwork","Port Authority/Governance"="port authority|department|oversee|manag|operations|independent|established","Size/Importance"="largest|busiest|biggest|\\bbig\\b|major|best|consumers","Location"="located|in oakland|east shore|crane|jack london|west oak|harbor|waterfront")survey2 <- survey2 |>mutate(know_theme =tag_theme(S01.Heard.of.Port..Yes, know_patterns))theme_explorer(survey2, "know_theme", "S01.Heard.of.Port..Yes",title ="What do you know about the Port of Oakland?")
What do youth who haven’t heard of the Port think it does?
Even youth who hadn’t heard of the Port mostly guessed it handles shipping and cargo, describing it as a place where ships come and go with goods. Others guessed it runs boats, ferries, or other transportation, or that it involves the airport, which is partly right. Some weren’t sure, and only a few connected it to the environment or water.
Code
does_patterns <-list("Unsure/Don't Know"= unsure_rx,"Environment/Water"="environment|pollut|marine|water|\\bbay\\b","Shipping/Cargo/Trade"="ship|cargo|container|trade|import|export|goods|freight|deliver|store|storage","Boats/Ferries/Transportation"="boat|ferr|transport|travel|dock|station","Airport/Planes"="airport|plane|flight","Jobs/Economy"="\\bjob|employ|econom|business|money")survey2 <- survey2 |>mutate(does_theme =tag_theme(S01.Heard.of.the.Port..No, does_patterns))theme_explorer(survey2, "does_theme", "S01.Heard.of.the.Port..No",title ="What do you think the Port of Oakland does?")
Do youth know where the Port of Oakland is located?
Code
port_loc_patterns <-list("Unsure/Don't Know"= unsure_rx,"West Oakland"="west\\s*oak","Jack London Square"="jack\\s*london","Harbor/Waterfront"="middle\\s*harbor|outer\\s*harbor|inner\\s*harbor|embarcadero|estuary|waterfront","Oakland (general)"="oak\\s*land")port_loc_correct <-c("West Oakland", "Jack London Square", "Harbor/Waterfront", "Oakland (general)")survey2 <- survey2 |>mutate(port_loc_theme =tag_theme(S03.Port.Location., port_loc_patterns),port_loc_correct = port_loc_theme %in% port_loc_correct)port_loc_pct <- survey2 |>filter(!is.na(port_loc_theme)) |>summarise(pct =round(mean(port_loc_correct) *100, 1)) |>pull(pct)plot_bar(survey2, port_loc_theme, "Where is the Port of Oakland located?")
On a scale of 1–5, how familiar are youth with the Port? (Pre-survey)
Code
fam_pre_mean <-round(mean(as.numeric(str_extract( survey2$Pre.Event.Pre.Survey.Q01.How.familiar.with.Port., "\\d")), na.rm =TRUE), 2)plot_bar(survey2, Pre.Event.Pre.Survey.Q01.How.familiar.with.Port.,"Before the event: How familiar are you with the Port of Oakland? (1–5)",order ="natural")
What is young people’s use of the Port of Oakland?
Have youth been to the Port of Oakland (including the airport)?
Code
plot_bar(survey2, S02..Pre.Event.Q04..Post.Event.Q04.Been.to.Port.,"Have you ever been to the Port of Oakland (including the airport)?")
Part 2: The Oakland Airport (OAK)
What is young people’s familiarity with the Oakland Airport?
Did youth know the Airport is owned by the Port?
Code
plot_bar(survey2, S05.Know.Port.owns.OAK., "Did you know the Port of Oakland owns the Oakland Airport?")
Most youth (80%) have flown in or out of Oakland Airport, though usually not often. The most common answer was once every few years (37%). About 43% fly through OAK at least once a year, including 18% who go more than twice a year. One in five have never used it.
Code
plot_bar(survey2, S07.Use.OAK.Alt, "How often do youth use the Oakland Airport?")
What do youth think about the Airport and its expansion?
Do youth know about the Oakland Airport’s planned expansion?
Most youth (58%) didn’t know about the Oakland Airport’s planned expansion. About 42% had heard of it.
Code
plot_bar(survey2, S08.Know.OAK.expansion., "Did you know about the Oakland Airport's planned expansion?")
Do youth think the Oakland Airport should expand?
Over half of youth (57%) think the Oakland Airport should expand. About a quarter (24%) were unsure, and 19% were opposed.
Code
plot_bar(survey2, S09.Should.OAK.expand., "Do you think the Oakland Airport should expand?")
What are youth opinions on the expansion?
Responses are colored by whether the respondent said the Airport should expand (Yes / No / Unsure).
Supporters mostly focused on economic and practical benefits. The most common reasons were jobs and economic growth, more flights and capacity, and modernizing an aging airport. Many also gave personal reasons: OAK is closer and easier to reach than SFO, and several East Bay respondents said they’d rather not travel across the bridge to fly.
Support was often conditional. A number of “yes” respondents added caveats, saying expansion should only happen if noise and pollution are kept to a minimum or if nearby communities aren’t harmed. That’s why a small share of the Environment/Nature responses come from supporters.
Opponents were driven mainly by environmental and community concerns. Most “no” responses mentioned air pollution, noise, and health impacts on neighborhoods near the airport, especially East Oakland. A smaller group felt expansion simply isn’t needed because SFO is nearby and OAK is fine as it is.
Most unsure respondents said they needed more information. They wanted to know the pros and cons, how expansion would affect nearby residents, and even what “expansion” means: more flights, new terminals, or more land. This fits the earlier finding that most youth (58%) hadn’t heard of the expansion, and it points to a clear opening for education.
Code
expand_patterns <-list("Unsure/Don't Know"= unsure_rx,"Needs More Info/Pros & Cons"="pros|cons\\b|downside|positive|negative|information|learn more|know more|to know|knowing|knew|reason|effects|how big|visualize","Environment/Nature"="environment|nature|animal|wildlife|flood|sea level|climate|pollut|emission|noise","Not Needed/Big Enough"="big enough|right size|small|the way it is|fine how it is|we have sfo|overshadow|won'?t increase|struggle|resources","Economy/Income"="income|profit|revenue|econom|money|\\bjobs?\\b|attraction","Modernize/Better Experience"="modern|upgrade|renovat|aging|\\bold\\b|efficien|smooth|safety|experience|customer|restaurant|store|faster|improve|subpar|taken care","Convenience/Closer Than SFO"="connectivity|transport|closer|closest|local airport|driv|far away|sfo|accessib|assessable|options|direct flight|international|routes","More Capacity/Flights"="flight|passenger|airplane|planes|airlines|space|room|accommodat|busier|busy|population|doubling|bigger|ticket|operations|usage|lot of people")survey2 <- survey2 |>mutate(expand_text =coalesce(S09.Should.OAK.expand..Yes, S09.Should.Oak.expand..No, S09.Should.OAK.expand..Unsure),expand_theme =tag_theme(expand_text, expand_patterns) )theme_explorer(survey2, "expand_theme", "expand_text", "S09.Should.OAK.expand.",title ="Why should (or shouldn't) the Airport expand?")
What do youth think about the Airport’s impact on the surrounding community?
Do youth think the Oakland Airport is important to the Oakland community?
Code
plot_bar(survey2, S10.OAK.important.to.community., "Is the Oakland Airport important to the Oakland community?")
Code
importance_patterns <-list("Pollution/Concerns"="pollut|emission|\\bair quality|environment|health|asthma|noise|impacted","Transportation/Access"="transport|travel|get around|getting around|commut|\\bnear|close|local|driv|\\bbart\\b|\\bbus\\b|sfo|sf airport|san francisco|cross the bay|point a|where they need|hub|gateway|around the world|congest|traffic|movement|alternative|aviation|flight|\\bfly|access|convenien|connect|visit|explore|new things|adventure|different states","Jobs/Economy"="\\bjob|income|growth|employ|econom|business|money|revenue|touris|commerce|logistic|resources|develop|thrive")survey2 <- survey2 |>mutate(importance_text =coalesce(S10.OAK.important.to.community..Yes, S10.OAK.important.to.community..No, S10.OAK.important.to.commnity..Unsure),importance_theme =tag_theme(importance_text, importance_patterns) )theme_explorer(survey2, "importance_theme", "importance_text", "S10.OAK.important.to.community.",title ="Why is (or isn't) the Airport important to the community?")
How do youth think the Oakland Airport impacts the community?
Code
community_patterns <-list("Unsure/Don't Know"= unsure_rx,"Pollution/Noise/Health"="pollut|emission|\\bair quality|environment|health|asthma|toxic|fuel|noise|loud|traffic|congest","Jobs/Economy"="\\bjob|employ|econom|business|money|revenue|touris|spending|demand|services|logistic|develop|merch|brings? in","Transportation/Access"="transport|travel|\\bfly|flight|places|point a|a to b|navigate|closer|sfo|sf airport|san francisco|out of state|journey|access|convenien|connect|visit","Community/Housing"="communit|neighborhood|resident|housing|displace|families|east oakland","Positive/Mixed (General)"="positiv|negativ|good way")survey2 <- survey2 |>mutate(community_theme =tag_theme(S11.OAK.impacts.community., community_patterns))theme_explorer(survey2, "community_theme", "S11.OAK.impacts.community.",title ="How does the Oakland Airport impact the community?")
What do youth think about the Airport’s impact on the environment?
Do youth think the Oakland Airport impacts the local environment?
Code
plot_bar(survey2, S12.OAK.impacts.climate., "Does the Oakland Airport impact the local climate/environment?")
Why do (or don’t) youth think the Airport impacts the environment?
Code
climate_patterns <-list("Unsure/Don't Know"= unsure_rx,"Air Pollution/Emissions"="pollut|emission|exhaust|\\bair\\b|smog|particulate|soot","Fuel/Carbon/Climate Change"="fuel|jet fuel|carbon|co2|greenhouse|climate change|fossil|gas","Water/Wildlife/Habitat"="water|bay\\b|wildlife|bird|habitat|wetland|marsh|ocean|sea level","Noise"="noise|loud","Health"="health|asthma|sick|respiratory|lung","Traffic/Cars"="traffic|car\\b|cars|uber|congest")survey2 <- survey2 |>mutate(climate_text =coalesce(S12.OAK.impacts.climate..Yes, S12.OAK.impacts.climate..No),climate_theme =tag_theme(climate_text, climate_patterns) )theme_explorer(survey2, "climate_theme", "climate_text", "S12.OAK.impacts.climate.",title ="Why does (or doesn't) the Airport impact the environment?")
Do youth think the Oakland Airport contributes to air pollution?
Code
plot_bar(survey2, S13.OAK.contributes.air.pollution., "Does the Oakland Airport contribute to air pollution?")
How do youth think the Airport can decrease its impacts?
Electrification was by far the most common idea. Many youth suggested switching ground support equipment, shuttles, and airport vehicles from gas and diesel to electric. Some also called for shore power at gates so planes don’t idle. Sustainable aviation fuel and cleaner fuels came next, along with renewable energy, especially solar panels on terminals.
Beyond technology, youth suggested reducing the airport’s footprint in other ways. These included better public transit so fewer people drive to the airport, fewer flights or capping growth until emissions targets are met, noise limits and barriers, and green buffers such as trees, habitat, and parks around the airport. A smaller group focused on accountability: stronger regulation, a carbon reduction plan with clear milestones, more research, and direct support for affected communities, such as health assessments or a community fund.
A sizable group weren’t sure what the airport could do, and several felt plane emissions are unavoidable. Some said the only real options are fewer flights or no airport at all.
Code
reduce_patterns <-list("Unsure/Don't Know"= unsure_rx,"Fewer Flights/Noise Limits"="fewer|less plan|amount of (flights|airplanes|planes)|unnecessary planes|stop using|reduce flights|limit|not expand|no expansion|noise","Plans/Regulation/Research"="regulat|monitor|track|submeter|\\bplan\\b|program|milestone|guideline|system|policy|rule|standard|incentive|offset|research|stud(y|ies)","Cleaner Fuels, Tech & Transit"="clean|lower.carbon|efficien|technolog|electri|solar|renewable|sustainab|eco.friendly|emission friendly|safer gas|energy|different (way|method)|materials|instead of fossil|without using fuel|lighting|hvac|equipment|maintenance|public transport|ground transport","Reduce Emissions (General)"="reduc|decreas|\\bless\\b|avoid|cut|help the environment","Describes Problem, No Fix"="pollut|emission|fuel|carbon|particle|eco ?system|wildlife|unavoidable|contribute|worse|smell")survey2 <- survey2 |>mutate(reduce_theme =tag_theme(S13.OAK.contributes.air.pollution..Yes, reduce_patterns))theme_explorer(survey2, "reduce_theme", "S13.OAK.contributes.air.pollution..Yes",title ="How can the Oakland Airport decrease its impacts?")
Do youth think electrification will help decrease environmental impacts?
Code
plot_bar(survey2, S15...Does.electrification.decrease.impact.,"Do you think electrification will decrease environmental impacts?")
Take-aways for Future Events
What topics should we cover in the future?
Environmental impacts and sustainability plans were the top interest. Many asked for specifics: how many tons of emissions the airport releases each year, air quality testing results near the airport, how much noise it makes at night, flight paths over neighborhoods, and timelines for phasing out diesel equipment and reaching zero emissions. One parent asked whether the air is safe for their newborn daughter to breathe.
Many wanted to understand the expansion: why it’s happening, who is leading it, what it costs, and how it would affect nearby communities, including housing, land use, noise, and air quality. Several had never heard of the expansion before the survey.
Community impact and accountability came up often. Youth asked how the airport benefits local residents, whether it hires locally or donates, how it spends its money, and how the public can weigh in or help reduce harms. Some responses showed distrust, such as wanting to know “the specific ways they have harmed the community and how we can help fight back,” or whether the airport has avoided chances to reduce its impact.
Others had practical or career interests: destinations, airlines, ticket prices, how OAK compares to SFO, why it has fewer international flights, transit access, the airport’s history, and job opportunities. One youth said they’d love to work there.
A few responses raised especially thoughtful points:
Information access: One respondent said information about the airport is often overly technical and hard to find unless you’re connected with people in the city.
Hidden costs of clean energy: Two respondents asked about the impact of electrification on communities where the minerals for batteries and renewable technology are mined. They argued those communities are affected too, even if they aren’t nearby.
Code
learn_patterns <-list("Not Interested/Unsure"=paste0(unsure_rx, "|^no$|^no,|nothing|no thank|not really|^possibly|^\\w\\W*$"),"Environment/Air Quality"="environment|sustain|green|climate|pollut|emission|clean energy|electri|renewable|carbon|co2|air quality|help the world","Jobs/Careers"="\\bjob|career|\\bwork\\b|employ|intern|opportunit|training|\\bpay\\b","Expansion & Upgrades"="expan|modern|renovat|improvement|future|plans|upgrade|building more|being added","Flights & Passenger Services"="flight|route|destination|non ?stop|airline|ticket|schedule|availability|servic|lounge|oneworld|landing|ground transportation|capacity","Money/Business"="cost|money|revenue|business|allocate|econom|\\bmake\\b|profit|fund|sponsor","Operations & Background"="how (it|they|the port|the airport) work|operat|function|logistic|day to day|\\bmanag|activity|emergency|data|fuel|rules|regulation|effectiveness|history|origin|purpose|own other","Community Impact"="communit|impact|imact|affect|\\beffects?\\b|local|resident|neighborhood|health|cities|east bay|public|pros and cons")survey2 <- survey2 |>mutate(learn_theme =tag_theme(S16...What.to.learn.about.OAK., learn_patterns))theme_explorer(survey2, "learn_theme", "S16...What.to.learn.about.OAK.",title ="What do you want to learn more about?")
Would youth consider working for the Port of Oakland?
Code
plot_bar(survey2, S17...Want.employment.with.Port.OAK.,"Would you ever consider employment with the Port of Oakland?")
What trainings or skills would be helpful?
Youth want a wide range of training, but customer service, communication, and hands-on technical skills came up most. Many named specific airport roles, like pilot, TSA and customs officer, ramp and ground crew, and aircraft mechanic. Others named skilled trades such as electrical, HVAC, welding, and plumbing. Smaller groups named logistics and cargo work, digital skills (computers, data, coding, cybersecurity), and green jobs like EV maintenance and solar.
Many youth said the bigger barrier is not knowing what jobs exist. They asked for job fairs, info sessions, presentations at schools, internships, and outreach on Instagram and TikTok. They also wanted clear information on qualifications and career paths. Several asked for beginner-friendly, hands-on training and certifications that support people with little prior experience.
Code
skills_patterns <-list("Not Sure/Not Interested"=paste0(unsure_rx, "|not interested|(do not|don'?t) want to work"),"Customer Service & People Skills"="customer|costumer|passenger|communicat|working with people|dealing with|people skills|vocal|bi ?lingual|leadership|teamwork|(project|time|money|financial) management|managerial|collaborat|soft skill|assist people","Safety, Health & Certifications"="safety|certif|cpr|first aid|food handling|health ?care|medical|emergency","Environment & Community"="environment|sustainab|green|climate|clean|energy|electrif|electric vehicle|solar|pollut|animal|wildlife|community clean|community service","Career Prep & Workforce Programs"="workforce|resume|interview|info ?sessions?|inform|practical skills|targeted|internship|shadow|tour|field trip|outreach|job (fair|placement|readiness|advertis)|career|hiring|financial literacy|budget","Aviation & Hands-on Operations"="pilot|piolet|fly a plane|landing|aviation|flight attendant|air traffic|aircraft|ramp|ground service|crane|forklift|machiner|equipment|mechanic|maintenance|technical|operat|cdl|driver|truck|weld|labor|logistic|supply chain|cargo|warehouse|maritime|diving","Digital, Tech & Office Skills"="computer|digital|data|cyber|network(?!ing)|\\bai\\b|software|coding|engineer|\\bstem\\b|\\btech|3d|video edit|technical writing|marketing|administrat")survey2 <- survey2 |>mutate(skills_theme =tag_theme(S18...What.trainings.do.you.want., skills_patterns))theme_explorer(survey2, "skills_theme", "S18...What.trainings.do.you.want.",title ="What trainings or skills would be helpful?")
Did familiarity with the Port change after the event?
Familiarity with the Port rose sharply after the event. The share of youth rating themselves a 4 or 5 nearly doubled, from 31% to 61%, while those rating themselves a 1 or 2 dropped from 45% to just 9%. The average rating went from about 2.8 to 3.8 out of 5.
Code
to_num <-function(x) as.numeric(str_extract(as.character(x), "\\d"))fam_post_mean <-round(mean(to_num(survey2$Post.Survey.How.familar.with.the.Port.), na.rm =TRUE), 2)fam <- survey2 |>transmute(Pre =as.character(Pre.Event.Pre.Survey.Q01.How.familiar.with.Port.),Post =as.character(Post.Survey.How.familar.with.the.Port.)) |>pivot_longer(everything(), names_to ="Survey", values_to ="Rating") |>filter(!is.na(Rating)) |>count(Survey, Rating) |>group_by(Survey) |>mutate(pct = n /sum(n) *100) |>ungroup() |>mutate(Survey =factor(Survey, levels =c("Pre", "Post")))ggplot(fam, aes(x = Rating, y = pct, fill = Survey)) +geom_col(position =position_dodge(width =0.8), width =0.75) +geom_text(aes(label =paste0(round(pct), "%")),position =position_dodge(width =0.8), vjust =-0.4,family ="serif", size =3.5) +scale_fill_manual(values =c(Pre ="#cccccc", Post ="#66C2A5")) +scale_y_continuous(expand =expansion(mult =c(0, 0.12))) +labs(title ="How familiar are you with the Port of Oakland? (1–5)",subtitle ="Percent of respondents in each survey",x ="Familiarity Rating", y ="Percent", fill =NULL) +theme_rose()
Are youth interested in volunteering with NVR?
Code
plot_bar(survey2, Staying.Connected, "How would you like to stay connected?")
Summary
Key findings:
Youth know the basics but have low familiarity. Most could name the Port’s location (West Oakland) and its main role as a shipping hub, but almost half rated themselves a 1 or 2 out of 5 on familiarity before the event.
Most youth use the airport, but not often. About 80% have flown through Oakland Airport, usually once a year or less.
Youth value the airport but recognize its harms. Nearly all said the airport is important to the community (90%) and that it affects the local environment (91%). Most (85%) said it contributes to air pollution.
Support for expansion is real but conditional and often uninformed. Most youth (58%) hadn’t heard of the expansion, yet 57% support it, mainly for jobs, more flights, and convenience. Many supporters added that it should only happen if pollution and community impacts are minimized. Opponents focused on pollution, health, and environmental justice for nearby neighborhoods, and most unsure youth said they needed more information.
Youth want cleaner operations and more information. The top suggestion for reducing impacts was cleaner technology, especially electrifying ground operations. The top topic youth want to learn about was the airport’s environmental and air quality impacts.
The event increased familiarity. The share of youth who rated themselves a 4 or 5 nearly doubled, from 31% to 61%, and the average rating rose from 2.8 to 3.8.