School Shootings Are Political Violence

It’s worth it to have a cost of, unfortunately, some gun deaths every single year so that we can have the Second Amendment to protect our other God given rights.

~ Charlie Kirk

Charlie Kirk was killed on September 10, 2025. On the same day in Evergreen CO, two students were critically wounded during a shooting at school. Kirk's death resulted in politicians and pundits either declaring him a martyr or a victim of his own rhetoric. 

Before September 10, I knew nothing about Charlie Kirk. From what I can gather since then, he shared views similar to those of many on the US right: contempt for LGBQ folks, trans people, black and brown people, and just about anyone not white, male, and christian. Flags were ordered to be flown at half-mast in honor of Kirk. The students shot in Colorado barely received thoughts and prayers.

The news coverage of the Kirk shooting prompted me to look at shooting incidents, in particular school shootings.

2025 School Shootings in the USA

I decided to look at US school shootings for this year. I focused on the US because I live in the US and no other developed country tolerates the level of school violence that the US does. On September 15, I downloaded 1518 records of gunfire incidents in US schools between January 17, 2013 and September 10, 2025 from EveryTown. The September 10, 2025 data includes the two students from Evergreen CO and Charlie Kirk. Kirk was shot on the campus of Utah Valley University.

I filtered the records for the year 2025.

library(tidyverse)

df_school <- read_csv('data/everytownresearch-gunfire-on-school-grounds.csv', name_repair = 'universal')
df_school_2025 <- df_school %>% filter(Incident.Date >= as.Date("2025-01-01"))

There have been 100 school shootings in the US between January 1 and September 10, 2025. This number might vary depending on the data source chosen and the metrics used for counting, but to me it seems pretty shocking.




shooting_by_state <- df_school_2025 %>% 
  group_by(State) %>% 
  count(State) %>% 
  arrange(desc(n)) %>% 
  mutate(State_name = state.name[match(State, state.abb)]) %>% 
  rename(Shootings = n)



We can use the data to plot a map of the states with the number of shootings in each state.

df_states <- data.frame(State_name = state.name, 
  State = state.abb, 
  Shootings = 0
  )
shooting_all_states <- df_states %>% 
  rows_update(shooting_by_state)

state_data <- data.frame(
  region = tolower(state.name),  
  value = shooting_all_states$Shootings  
)

# state_centers is in base
state_centers <- as.data.frame(state.center)
state_centers$region <- state.name
state_centers$value <- shooting_all_states$Shootings
state_centers$label <- paste(state_centers$region, "\n", state_centers$value)

#us_map is in mapdata library
ggplot() +
  geom_polygon(data = us_map, aes(x = long, y = lat, group = group),
               fill = "white", color = "black") +
  geom_text(data = state_centers, aes(x = x, y = y, label = label),
            color = "darkblue", size = 2.5, fontface = "bold") +
  coord_fixed(1.3) +
  theme_void() +
  labs(title = "US States with Names and Values")


International School Shootings


Getting data on shootings in other developed countries is more difficult than obtaining US data. I couldn't find national sites tracking shootings like those tracking the US. That's probably because other developed countries don't have the problem to the degree that the US does.

I asked ChatGPT 5 to search for me. It came up with a limited number of cases. With some diligence, I could probably expand this set.




School Shootings Are Political Violence


Why do I say school shooting are political violence? It's because the US political system at both the state and federal level refuses to take any effective action. As Charlie Kirk pointed out, this is the price of the 2nd amendment. Is it worth it?

No comments:

Post a Comment