Load Philadelphia Crime Data
crime1 <- read_csv("incidents_part1_part2.csv",show_col_types=FALSE)
crime2 <- read_csv("incidents_part1_part2 (1).csv",show_col_types=FALSE)
crime3 <- read_csv("incidents_part1_part2 (2).csv",show_col_types=FALSE)
crime <- bind_rows(crime1,crime2,crime3)
Prepare the Data
crime$date <- as.Date(crime$dispatch_date_time)
crime$year <- year(crime$date)
crime$quarter <- quarter(crime$date)
violent <- crime %>%
filter(year >= 2020 & year <= 2022) %>%
filter(text_general_code %in% c(
"Aggravated Assault",
"Robbery",
"Homicide - Criminal"
)) %>%
filter(!is.na(lat),!is.na(lng))
violent$year_quarter <- paste0(year(violent$date),"-Q",quarter(violent$date))
Daily Violent Crime Counts
daily_crime <- violent %>%
group_by(date) %>%
summarise(total_violent_crimes=n())
Scatterplot: Violent Crime Over Time
ggplot(daily_crime,aes(x=date,y=total_violent_crimes))+
geom_point(alpha=0.5,color="red")+
theme_minimal()+
labs(
title="Violent Crime Over Time in Philadelphia (2020–2022)",
x="Date",
y="Number of Violent Crimes"
)

Histogram: Violent Crime by Quarter
ggplot(violent,aes(x=year_quarter))+
geom_bar(fill="steelblue",color="black")+
theme_minimal()+
labs(
title="Violent Crimes by Quarter (2020–2022)",
x="Year-Quarter",
y="Number of Crimes"
)+
theme(axis.text.x=element_text(angle=45,hjust=1))

Map of Violent Crime Locations
philly_map <- map_data("county") %>%
filter(region=="pennsylvania",subregion=="philadelphia")
ggplot()+
geom_polygon(data=philly_map,aes(x=long,y=lat,group=group),
fill="gray90",color="black")+
geom_point(data=violent,aes(x=lng,y=lat),
alpha=0.15,color="darkred",size=0.5)+
coord_quickmap()+
theme_minimal()+
labs(title="Map of Violent Crime Incidents in Philadelphia (2020–2022)")
