
CFB Data Stats Examples
Saiem Gilani,
Akshay Easwaran, Jared Lee
Source: vignettes/cfbd_stats.Rmd
cfbd_stats.RmdLoad and Install Packages
if (!requireNamespace('pak', quietly = TRUE)){
install.packages('pak')
}
pak::pak(c("dplyr", "tidyr", "gt", "cfbfastR"))## ℹ Loading metadata database
## ✔ Loading metadata database ... done
##
##
## → Package library at /home/runner/work/_temp/Library.
## ✔ All system requirements are already installed.
##
## ℹ No downloads are needed
## ℹ Installing system requirements
## ℹ Executing `sudo sh -c apt-get -y update`
## Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [144 B]
## Hit:6 https://packages.microsoft.com/repos/azure-cli jammy InRelease
## Hit:2 http://azure.archive.ubuntu.com/ubuntu jammy InRelease
## Hit:3 http://azure.archive.ubuntu.com/ubuntu jammy-updates InRelease
## Hit:7 https://packages.microsoft.com/ubuntu/22.04/prod jammy InRelease
## Hit:4 http://azure.archive.ubuntu.com/ubuntu jammy-backports InRelease
## Hit:5 http://azure.archive.ubuntu.com/ubuntu jammy-security InRelease
## Hit:8 https://dl.google.com/linux/chrome-stable/deb stable InRelease
## Reading package lists...
## ℹ Executing `sudo sh -c apt-get -y install libicu-dev libcurl4-openssl-dev libssl-dev cmake make libuv1-dev pandoc libnode-dev libxml2-dev`
## Reading package lists...
## Building dependency tree...
## Reading state information...
## libicu-dev is already the newest version (70.1-2).
## make is already the newest version (4.3-4.1build1).
## pandoc is already the newest version (2.9.2.1-3ubuntu2).
## cmake is already the newest version (3.22.1-1ubuntu1.22.04.2).
## libcurl4-openssl-dev is already the newest version (7.81.0-1ubuntu1.27).
## libssl-dev is already the newest version (3.0.2-0ubuntu1.29).
## libuv1-dev is already the newest version (1.43.0-1ubuntu0.1).
## libxml2-dev is already the newest version (2.9.13+dfsg-1ubuntu0.12).
## libnode-dev is already the newest version (12.22.9~dfsg-1ubuntu3.6).
## 0 upgraded, 0 newly installed, 0 to remove and 34 not upgraded.
## ✔ 4 pkgs + 72 deps: kept 72 [10.4s]
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Settling 2019 LSU and 2013 Florida State offense debates
Get Season Statistics by Team
team_season_stats <- dplyr::bind_rows(
cfbd_stats_season_team(year=2019, team = "LSU"),
cfbd_stats_season_team(year=2013, team = "Florida State")
)
logos <- read.csv("https://raw.githubusercontent.com/sportsdataverse/cfbfastR-data/main/themes/logos.csv")
logos<- logos |> dplyr::select(-"conference")
df_team_season <- team_season_stats |>
dplyr::left_join(logos, by=c("team"="school"))
df_team_season_long <- as.data.frame(t(as.matrix(df_team_season)))
colnames(df_team_season_long) <- df_team_season$teamGet Season Advanced Statistics by Team
df_team_season_adv <- dplyr::bind_rows(
cfbd_stats_season_advanced(2019, team = "LSU"),
cfbd_stats_season_advanced(2013, team = "Florida State")
)
df_team_season_adv <- df_team_season_adv |>
dplyr::left_join(logos, by=c("team"="school"))Get Game Advanced Stats
df_team_game_adv <- dplyr::bind_rows(
cfbd_stats_game_advanced(2019, team = "LSU"),
cfbd_stats_game_advanced(2013, team = "Florida State")
)
df_team_game_adv <- df_team_game_adv |>
dplyr::left_join(logos, by=c("team"="school"))Get Season Statistics by Player
source("https://raw.githubusercontent.com/sportsdataverse/cfbfastR-data/main/themes/gt_theme_code_SG.R")
passing_df <- dplyr::bind_rows(
cfbd_stats_season_player(2019, team = "LSU", category = "passing"),
cfbd_stats_season_player(2013, team = "Florida State", category = "passing")) |>
dplyr::left_join(logos, by=c("team"="school")) |>
dplyr::group_by(team) |>
dplyr::mutate(logo = sprintf('<img src="%s" height="30" alt="%s logo">', logo, team)) |>
dplyr::select(logo,
player,
passing_completions,
passing_att,
passing_yds,
passing_td,
passing_int,
passing_ypa) |>
arrange( desc(passing_yds), team)## Adding missing grouping variables: `team`
passing_df |> gt() |>
tab_header(title = "Passing Summary") |>
cols_label(logo="",
player = "Player",
passing_completions = "C",
passing_att = "Att",
passing_yds = "Yds",
passing_td = "TDs",
passing_int = "INTs",
passing_ypa = "YPA") |>
data_color(
columns = c("passing_yds"),
colors = scales::col_numeric(
palette = "RdBu",
domain = c(-6000,6000)
)
) |>
data_color(
columns = c("passing_td"),
colors = scales::col_numeric(
palette = "RdBu",
domain = c(-60,60)
)
) |>
data_color(
columns = c("passing_td"),
colors = scales::col_numeric(
palette = "RdBu",
domain = c(-60,60)
)
) |>
# Render the team logos from pre-built <img> HTML that carries alt text
# (gt::web_image() cannot set alt; important for screen-reader accessibility).
fmt_markdown(columns = "logo") |>
tab_source_note(source_note = md("**Table:** @SaiemGilani | **Data:** @CFB_Data with @cfbfastR v2.0.0")) |>
gt_theme_538(table.width = px(550))## Warning: Since gt v0.9.0, the `colors` argument has been deprecated.
## • Please use the `fn` argument instead.
## This warning is displayed once every 8 hours.
| Passing Summary | |||||||
| Player | C | Att | Yds | TDs | INTs | YPA | |
|---|---|---|---|---|---|---|---|
| LSU | |||||||
| Joe Burrow | 402 | 527 | 5671 | 60 | 6 | 10.8 | |
| Myles Brennan | 24 | 40 | 353 | 1 | 1 | 8.8 | |
| Florida State | |||||||
| Jameis Winston | 257 | 384 | 4057 | 40 | 10 | 10.6 | |
| Jake Coker | 18 | 36 | 250 | 0 | 1 | 6.9 | |
| Sean Maguire | 13 | 21 | 116 | 2 | 2 | 5.5 | |
| Table: @SaiemGilani | Data: @CFB_Data with @cfbfastR v2.0.0 | |||||||
College Football Mapping for Stats Categories
## ── Stat categories for CollegeFootballData.com ─────────────── cfbfastR 3.0.0 ──
## ℹ Data updated: 2026-08-29 13:22:34 UTC
## # A tibble: 38 × 1
## category
## <chr>
## 1 completionAttempts
## 2 defensiveTDs
## 3 extraPoints
## 4 fieldGoalPct
## 5 fieldGoals
## 6 firstDowns
## 7 fourthDownEff
## 8 fumblesLost
## 9 fumblesRecovered
## 10 interceptions
## # ℹ 28 more rows
Our Authors
Related SportsDataverse packages
- cfbfastR - college football
- hoopR - men’s basketball
- wehoop - women’s basketball
- baseballr - baseball
- fastRhockey - hockey
- oddsapiR - betting odds
- sportyR - playing surfaces
- sportsdataverse-py - the Python package
- sportsdataverse-R - the R meta-package