This report uses the NTAD National Bridge Inventory dataset, a federal dataset containing over 600,000 bridge records across the United States, to explore one main story: do older bridges tend to be in worse structural condition? Bridge infrastructure is a longstanding public safety concern, and understanding the relationship between bridge age and condition can help identify where maintenance and investment are most urgently needed. The three visualizations below each convey one part of this story, moving from an overview of the current condition landscape to a closer look at how age relates to structural ratings.
library(tidyverse)
library(janitor)
NTAD_National_Bridge_Inventory <- read_csv("C:/Users/Wiest/Desktop/Home items/NTAD_National_Bridge_Inventory_4731338632742650510.csv")
cleanbridges <- NTAD_National_Bridge_Inventory %>%
clean_names() %>%
mutate(bridge_condition = factor(bridge_condition, levels = c("G", "F", "P")))
ggplot(cleanbridges, aes(x = bridge_condition)) +
geom_bar() +
scale_y_continuous(labels = scales::comma) +
labs(
title = "Most U.S. Bridges Are Rated Fair or Good",
x = "Bridge Condition (G = Good, F = Fair, P = Poor)",
y = "Number of Bridges"
)
Fair-rated bridges make up the largest share of U.S. bridges, followed closely by Good-rated bridges. Poor-rated bridges represent a smaller but significant portion of the national inventory. Data source: NTAD National Bridge Inventory (2025), n = 624,193 bridges.
ggplot(cleanbridges, aes(x = bridge_condition, y = year_built_027)) +
geom_boxplot() +
labs(
title = "Poor-Condition Bridges Were Built Earlier Than Good-Condition Ones",
x = "Bridge Condition (G = Good, F = Fair, P = Poor)",
y = "Year Built"
)
Bridges rated Poor were built significantly earlier than those rated Good. The median construction year for Good-rated bridges is approximately 2000, compared to roughly 1960 for Poor-rated bridges. This suggests that age is a meaningful factor in structural decline. Data source: NTAD National Bridge Inventory (2025), n = 624,193 bridges.
# Saving Figure 2 as the favorite plot -- most clearly shows the story
ggplot(cleanbridges, aes(x = bridge_condition, y = year_built_027)) +
geom_boxplot() +
labs(
title = "Poor-Condition Bridges Were Built Earlier Than Good-Condition Ones",
x = "Bridge Condition (G = Good, F = Fair, P = Poor)",
y = "Year Built"
)
ggsave("Lab3_FavoritePlot_AnthonyWiest.png", width = 8, height = 5)