Capstone Projects
Import bank CSV exports, clean with dplyr/lubridate, categorize transactions with case_when + regex, summarize monthly spending, and plot trends with ggplot2.
Project 1 — Personal finance tracker (beginner)
Import bank CSV exports, clean with dplyr/lubridate, categorize transactions with case_when + regex, summarize monthly spending, and plot trends with ggplot2. *Concepts: import, strings, dates, dplyr, ggplot2.*
Project 2 — Exploratory analysis report (beginner/intermediate)
Choose a public dataset (TidyTuesday, Kaggle, Our World in Data). Produce a Quarto HTML report with EDA, at least 6 polished plots, summary tables (gt), and conclusions. *Concepts: tidyverse, visualization, Quarto.*
Project 3 — Statistical study (intermediate)
Formulate hypotheses on a dataset (e.g., clinical trial or A/B test data), run appropriate tests, check assumptions, compute effect sizes and power, fit regression/GLM models, and report with gtsummary/broom. *Concepts: inference, regression, GLMs, reporting.*
library(tidyverse); library(broom)
ab <- tibble(group = rep(c("A", "B"), each = 500),
converted = c(rbinom(500, 1, 0.10), rbinom(500, 1, 0.13)))
ab |> count(group, converted) |> pivot_wider(names_from = converted, values_from = n)
prop.test(table(ab$group, ab$converted)[, 2:1])
glm(converted ~ group, family = binomial, data = ab) |> tidy(exponentiate = TRUE, conf.int = TRUE)Project 4 — Predictive modeling pipeline (advanced)
Build a tidymodels pipeline (recipes, tuning, model comparison) to predict house prices or customer churn; interpret with DALEX/vip; orchestrate with targets; deploy as a plumber API with vetiver. *Concepts: ML, resampling, tuning, pipelines, deployment.*
Project 5 — Interactive dashboard (advanced)
A Shiny (bslib) dashboard over a database (DuckDB/Postgres via dbplyr) with filters, maps (leaflet), interactive plots (plotly), downloadable reports, and modules; tests with shinytest2; deploy to Posit Connect or Shinylive. *Concepts: Shiny, reactivity, databases, modules, deployment.*
Project 6 — Your own R package (advanced)
Wrap a set of utility functions (e.g., cleaning helpers for a domain) into a documented, tested package with a pkgdown site and GitHub Actions CI; add an S3 class with print/summary/plot methods. *Concepts: package development, roxygen2, testthat, S3, CI.*
Project 7 — Big-data analysis (expert)
Analyse a multi-GB dataset (e.g., NYC taxi trips) with Arrow + DuckDB using dplyr syntax, partitioned Parquet files, and parallel processing; benchmark against data.table. *Concepts: Arrow, DuckDB, data.table, performance.*
Project 8 — Text & sentiment analysis app (expert)
Scrape or call an API for reviews/news, analyse sentiment and topics (tidytext, stm), optionally use an LLM via ellmer for summarization, and present results in a Quarto dashboard. *Concepts: APIs/scraping, NLP, topic models, reporting.*