Generated 2026-08-03. The data URL below is pinned to commit cc66f1e3a, a
snapshot of the dataset as of this exercise — so your numbers should match these exactly.
Crime Type in R). Would you report it? Apply the small-number test: what are the raw counts behind the percentage?Crime Type and sort descending. What share of the week is the top type? (mutate(share = n / sum(n)).) Does the "most common incident" match what you'd guess from campus-crime coverage?library(tidyverse)
library(lubridate)
activity <- read_csv("https://raw.githubusercontent.com/dwillis/umpd-logs/cc66f1e3ad3ca0da154c9639ba22fa5baf4df298/data/all-police-activity.csv")
week_start <- ymd("2026-07-27")
daily <- activity |>
mutate(day = as_date(`Date Occurred`)) |>
filter(day >= week_start, day < week_start + days(7)) |>
count(day, name = "incidents") |>
complete(day = seq(week_start, week_start + days(6), by = "day"),
fill = list(incidents = 0))
daily |>
summarize(total = sum(incidents),
mean_per_day = round(mean(incidents), 1),
median_per_day = median(incidents))
Your summarize() output should match "This week's numbers" above: total 2,
mean 0.3, median 0. All values here use round(x, 1), which
rounds halves to the nearest even digit — the same rule as R's round().
Stuck on the concepts? The site's Learn pages walk through every technique used here, with this same dataset.