Skip to contents

Implements 12-team CFP straight seeding (2025 rule): the field is the playoff_seeds best-ranked teams with the 5 highest-ranked conference champions guaranteed inclusion, and seeds are assigned strictly in ranking order (champions are not bumped up).

Usage

cfb_playoff_seeds(standings, rankings = NULL, playoff_seeds = 12L)

Arguments

standings

A standings table as returned by cfb_standings() (requires at least team, conference, conf_champ, win_pct, sov, sos, pd, and a sim or season id column).

rankings

Optional data frame with columns team and rank (1 = best), e.g. the CFP committee rankings. Teams missing from rankings are treated as unranked and ordered behind all ranked teams. When NULL, a documented fallback ordering is used instead: teams are ordered by win percentage, then strength of victory, strength of schedule, point differential, and team name.

playoff_seeds

Number of playoff spots (default 12).

Value

The standings input (all its columns unchanged; see cfb_standings() for the column table) with one column added:

ColumnTypeDescription
seedintegerCFP seed in straight-seeding order; NA for teams outside the playoff field.

Details

If there are fewer than 5 conference champions, all champions are guaranteed (capped at playoff_seeds). A guaranteed champion ranked outside the top playoff_seeds displaces the lowest-ranked at-large team and is seeded by its rank order within the field (i.e. it takes the last seed).

See also

Examples

games <- read.csv(system.file("extdata", "toy_games.csv", package = "cfbseedR"))
teams <- read.csv(system.file("extdata", "toy_teams.csv", package = "cfbseedR"))
standings <- cfb_standings(games, teams, tiebreaker_depth = "POINTS",
                           verbosity = "NONE")
rankings <- data.frame(team = c("B1", "I1", "A1", "A3"), rank = 1:4)
seeded <- cfb_playoff_seeds(standings, rankings = rankings, playoff_seeds = 4)
seeded[!is.na(seeded$seed), c("team", "seed")]
#> # A tibble: 4 × 2
#>   team   seed
#>   <chr> <int>
#> 1 A1        3
#> 2 A3        4
#> 3 B1        1
#> 4 I1        2