Skip to contents

Pre-computed annual crash counts from FARS (fatal crashes) and CRSS (general crash estimates) databases for 2014-2023, broken down by various risk factors and vulnerable road user categories.

Usage

annual_counts

Format

A tibble with 340 rows and 9 variables:

year

Year (2014-2023)

month

Month, if included in interval, as the three-letter abbreviation and an ordered factor (Jan=1, Feb=2, etc.)

what

Count unit - currently only "crashes"

states

Geographic scope - "all" for national-level data

region

Regional scope - "all" for national-level data

urb

Urban/rural classification - "all" for combined data

who

Person type - "all" for all person types

involved

Risk factor or crash type. Options include:

"any"

All crashes (general counts)

"each"

Each factor listed below, separately

"alcohol"

Alcohol-involved crashes

"bicyclist"

Crashes involving bicyclists

"distracted driver"

Distracted driving crashes

"drugs"

Drug-involved crashes

"hit and run"

Hit-and-run crashes

"large trucks"

Large truck-involved crashes

"motorcycle"

Motorcycle crashes

"older driver"

Crashes involving older drivers

"pedalcyclist"

Crashes involving pedalcyclists

"pedbike"

Pedestrian and bicyclist crashes combined

"pedestrian"

Pedestrian crashes

"police pursuit"

Police pursuit-related crashes

"roadway departure"

Roadway departure crashes

"rollover"

Rollover crashes

"speeding"

Speed-related crashes

"young driver"

Crashes involving young drivers

n

Count of crashes. FARS counts represent actual fatal crashes; CRSS counts represent weighted estimates of all crashes

Details

This dataset provides quick access to national-level annual crash counts without needing to download and process the full datasets. It combines data from two NHTSA databases:

FARS

Fatal crashes (actual counts)

CRSS

General crashes (weighted estimates)

The data can be reproduced using the counts() function on downloaded FARS and CRSS data with involved = "any" and involved = "each" parameters.

See also

counts for generating custom counts from downloaded data

Examples

if (FALSE) { # \dontrun{
# View total crashes over time by data source
library(dplyr)
library(ggplot2)

annual_counts %>%
  filter(involved == "any") %>%
  ggplot(aes(x = year, y = n, fill = source)) +
  geom_col(position = "dodge") +
  labs(title = "Annual Crash Counts by Data Source",
       x = "Year", y = "Number of Crashes")

# Compare risk factor trends in fatal crashes
annual_counts %>%
  filter(source == "FARS",
         involved %in% c("alcohol", "speeding", "distracted driver")) %>%
  ggplot(aes(x = year, y = n, color = involved)) +
  geom_line() +
  labs(title = "Fatal Crash Trends by Risk Factor",
       x = "Year", y = "Fatal Crashes")
} # }