Project 2: U.S. Average Tuition by State, 2004 to 2016
Author
Supriya P.
Published
October 11, 2026
Introduction
This dataset was posted by Mubin Ejaz in the Week 5 discussion. It comes from TidyTuesday and shows the average tuition at public colleges and universities in each U.S. state for every academic year from 2004-05 to 2015-16. My goal is to see how much tuition rose over those 12 years and which states saw the biggest increases.
After reshaping, each row is one state and one academic year. I used str_trim() to remove the extra spaces from the 2007-08 label before working with it. To get a numeric year, I kept the starting year of each academic year (so “2004-05” becomes 2004), and kept the original label in its own column for readability. parse_number() removed the dollar signs and commas from the tuition values.
The tidy table has 600 rows (50 states times 12 years) with no missing values, so every value converted cleanly.
Analysis
National Trend
Code
national <- tuition %>%group_by(start_year, academic_year) %>%summarize(avg_tuition =round(mean(tuition)), .groups ="drop") %>%mutate(pct_increase =round((avg_tuition /lag(avg_tuition) -1) *100, 1))kable(national, format.args =list(big.mark =","),col.names =c("Start Year", "Academic Year", "Average Tuition ($)", "Increase from Prior Year (%)"))
Start Year
Academic Year
Average Tuition ($)
Increase from Prior Year (%)
2,004
2004-05
6,410
NA
2,005
2005-06
6,654
3.8
2,006
2006-07
6,810
2.3
2,007
2007-08
7,086
4.1
2,008
2008-09
7,157
1.0
2,009
2009-10
7,762
8.5
2,010
2010-11
8,229
6.0
2,011
2011-12
8,539
3.8
2,012
2012-13
8,842
3.5
2,013
2013-14
8,948
1.2
2,014
2014-15
9,037
1.0
2,015
2015-16
9,318
3.1
Code
ggplot(national, aes(x = start_year, y = avg_tuition)) +geom_line(color ="steelblue") +geom_point(color ="steelblue") +scale_y_continuous(labels = scales::dollar) +labs(title ="Average Public College Tuition Across States",x ="Academic Year (start)", y ="Average Tuition" ) +theme_minimal()
The average across states rose from $6,410 in 2004-05 to $9,318 in 2015-16, an increase of about 45%. The biggest one-year jump was in 2009-10, at 8.5%, followed by 6.0% in 2010-11. Those years line up with the 2008 recession, when many states cut funding for public colleges, which likely pushed tuition up.
ggplot(state_change, aes(x = tuition_2004, y = pct_change)) +geom_point(color ="steelblue") +geom_text(data = state_change %>%filter(pct_change >90| pct_change <10),aes(label = state), vjust =-0.7, size =3 ) +scale_x_continuous(labels = scales::dollar) +labs(title ="Tuition Growth vs. Starting Tuition",x ="Tuition in 2004-05", y ="Percent Change by 2015-16 (%)" ) +theme_minimal()
Hawaii had the largest increase, with tuition more than doubling from $4,267 to $10,175 (138.5%). Arizona and Colorado were close behind at about 107%. Ohio was the only state where tuition went down, falling slightly from $10,378 to $10,196.
The scatterplot shows that the fastest growth mostly happened in states that started out cheap. States that already had high tuition in 2004-05, like Ohio, Pennsylvania, and Vermont, grew more slowly. Even so, the most expensive states in 2015-16 were still in the Northeast: New Hampshire ($15,160), Vermont ($14,993), and Pennsylvania ($13,395). Wyoming stayed the cheapest at $4,891.
Conclusions
The tidying for this dataset involved three small cleanup steps on top of the reshape: trimming the extra spaces in one header, converting academic year ranges into a single year, and stripping dollar signs and commas from the values. Once tidy, the data shows that average public tuition rose about 45% in 12 years, with the biggest jumps right after the 2008 recession. Growth was fastest in states that started out cheap, while the Northeast stayed the most expensive throughout.
These values are not adjusted for inflation, so part of the increase reflects general price growth. A next step would be to adjust tuition using the CPI data from my inflation dataset to see how much tuition grew in real terms, or to compare tuition growth with state funding per student over the same years.
AI Citation
Anthropic. (2026). Claude Opus 5.5 [Large language model]. https://claude.ai. Accessed October 2026.