README.md

FootballData

HitCount

To rebuild run make build.

library(glue)
library(kableExtra)
library(tidyverse)
library(FootballData)

select_country <- "England"
select_league <- "Championship"
select_team_interest <- "Nottingham Forest FC"

Competitions

Get all competitions.

competitions <- football_get_competition()

glimpse(competitions)
## Rows: 152
## Columns: 6
## $ league         <chr> "WC Qualification", "Primera B Nacional", "Superliga A…
## $ competition_id <int> 2006, 2023, 2024, 2149, 2025, 2147, 2008, 2026, 2020, …
## $ plan           <chr> "TIER_FOUR", "TIER_FOUR", "TIER_TWO", "TIER_FOUR", "TI…
## $ country        <chr> "Africa", "Argentina", "Argentina", "Argentina", "Arge…
## $ url_flag       <chr> NA, NA, NA, NA, NA, NA, NA, NA, "https://upload.wikime…
## $ flag           <glue> NA, NA, NA, NA, NA, NA, NA, NA, "<img src='https://up…

Filter to the ones on the free plan.

competitions_curated <- competitions %>%
  filter(
    plan == "TIER_ONE" 
  )

Show them.

competitions_curated %>%
  select(country,league,flag) %>%
  knitr::kable(escape = F) 
country league flag Brazil Série A NA England Championship England Premier League Europe UEFA Champions League NA Europe European Championship NA France Ligue 1 Germany Bundesliga Italy Serie A Netherlands Eredivisie Portugal Primeira Liga Spain Primera Division World FIFA World Cup NA

League info

Look at England - Championship.

league <- competitions_curated %>%
  filter(country == select_country & league == select_league) %>%
  pull(competition_id) %>%
  as.character() %>%
  football_get_teams()

league %>%
  select(team,crest) %>%
  knitr::kable(escape = F)
team crest Blackburn Rovers FC Norwich City FC Queens Park Rangers FC Stoke City FC Swansea City AFC Birmingham City FC Derby County FC Middlesbrough FC Sheffield Wednesday FC Watford FC Nottingham Forest FC Reading FC Barnsley FC Millwall FC Rotherham United FC Bristol City FC Luton Town FC Huddersfield Town AFC Brentford FC Cardiff City FC AFC Bournemouth Coventry City FC Preston North End FC Wycombe Wanderers FC

Standings

What’s the current league standings.

standings <- competitions_curated %>%
  filter(country == select_country & league == select_league) %>%
  pull(competition_id) %>%
  as.character() %>%
  football_get_standing()

glimpse(standings)
## Rows: 24
## Columns: 14
## $ position       <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,…
## $ playedGames    <int> 28, 27, 27, 27, 28, 28, 28, 27, 28, 28, 28, 27, 28, 27…
## $ form           <chr> "L,D,D,W,W", "W,W,W,D,W", "W,W,D,W,W", "D,W,D,W,W", "D…
## $ won            <int> 16, 15, 15, 14, 13, 12, 11, 11, 9, 12, 11, 10, 7, 9, 9…
## $ draw           <int> 7, 9, 8, 6, 9, 9, 7, 6, 12, 3, 3, 6, 14, 7, 7, 9, 6, 8…
## $ lost           <int> 5, 3, 4, 7, 6, 7, 10, 10, 7, 13, 14, 11, 7, 11, 11, 10…
## $ points         <int> 55, 54, 53, 48, 48, 45, 40, 39, 39, 39, 36, 36, 35, 34…
## $ goalsFor       <int> 35, 52, 35, 40, 31, 43, 31, 41, 32, 29, 32, 29, 26, 35…
## $ goalsAgainst   <int> 23, 27, 15, 29, 20, 28, 28, 29, 29, 33, 36, 34, 26, 31…
## $ goalDifference <int> 12, 25, 20, 11, 11, 15, 3, 12, 3, -4, -4, -5, 0, 4, -7…
## $ team_id        <int> 68, 402, 72, 355, 346, 1044, 343, 59, 70, 387, 1081, 3…
## $ team           <chr> "Norwich City FC", "Brentford FC", "Swansea City AFC",…
## $ url_team       <chr> "https://upload.wikimedia.org/wikipedia/en/8/8c/Norwic…
## $ crest          <glue> "<img src='https://upload.wikimedia.org/wikipedia/en/…
standings %>%
  select(position,points,team,form,crest) %>%
  knitr::kable(escape = F)
position points team form crest 1 55 Norwich City FC L,D,D,W,W 2 54 Brentford FC W,W,W,D,W 3 53 Swansea City AFC W,W,D,W,W 4 48 Reading FC D,W,D,W,W 5 48 Watford FC D,L,D,W,W 6 45 AFC Bournemouth W,L,L,L,L 7 40 Middlesbrough FC L,D,L,L,W 8 39 Blackburn Rovers FC L,W,W,D,W 9 39 Stoke City FC D,D,L,D,D 10 39 Bristol City FC L,L,L,W,L 11 36 Preston North End FC L,L,D,W,L 12 36 Barnsley FC D,D,L,L,L 13 35 Millwall FC W,D,D,D,W 14 34 Cardiff City FC W,D,D,L,L 15 34 Luton Town FC D,L,L,W,L 16 33 Queens Park Rangers FC W,W,L,W,W 17 33 Huddersfield Town AFC D,D,L,L,L 18 32 Nottingham Forest FC W,W,D,L,W 19 31 Coventry City FC D,L,D,W,L 20 29 Rotherham United FC W,W,L,W,D 21 28 Derby County FC L,W,W,W,L 22 28 Birmingham City FC L,D,D,L,W 23 19 Sheffield Wednesday FC L,W,W,L,W 24 16 Wycombe Wanderers FC L,D,L,L,W

Scheduled games

upcoming_foe_data <- standings %>%
  filter(
      team == select_team_interest
    ) %>%
  pull(team_id) %>%
  as.character() %>%
  football_get_upcoming() %>%
  arrange(utcDate) 

glimpse(upcoming_foe_data)
## Rows: 18
## Columns: 14
## $ id          <int> 306708, 306723, 306732, 306745, 306756, 306765, 306785, 3…
## $ competition <df[,3]> <data.frame[18 x 3]>
## $ season      <df[,5]> <data.frame[18 x 5]>
## $ utcDate     <chr> "2021-02-13T12:30:00Z", "2021-02-17T19:00:00Z", "2021-02-…
## $ status      <chr> "SCHEDULED", "SCHEDULED", "SCHEDULED", "SCHEDULED", "SCHE…
## $ matchday    <int> 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 4…
## $ stage       <chr> "REGULAR_SEASON", "REGULAR_SEASON", "REGULAR_SEASON", "RE…
## $ group       <chr> "Regular Season", "Regular Season", "Regular Season", "Re…
## $ lastUpdated <chr> "2021-01-22T19:33:55Z", "2021-01-26T23:33:52Z", "2020-08-…
## $ odds        <df[,1]> <data.frame[18 x 1]>
## $ score       <df[,6]> <data.frame[18 x 6]>
## $ homeTeam    <df[,2]> <data.frame[18 x 2]>
## $ awayTeam    <df[,2]> <data.frame[18 x 2]>
## $ referees    <list> [[], [], [], [], [], [], [], [], [], [], [], [], [], [],…

Metrics - League

metrics <- football_calculate_competition_metrics(standings)

# table
metrics %>%
  mutate(Team = paste(crest,team)) %>%
  select(Team, Mood = metric_mood)  %>%
  mutate(
    Mood = as.character(Mood),
    Mood = case_when(
      str_detect(Mood,"Jubilant") ~ cell_spec(
        Mood, color = "black", background = "#98FB98"
      ),
      str_detect(Mood,"Optimistic") ~ cell_spec(
        Mood, color = "black", background = "#e5f5f9"
      ),
      str_detect(Mood,"Ambivalent") ~ cell_spec(
        Mood, color = "black", background = "#f7fcb9"
      ),
      str_detect(Mood,"Doldrums") ~ cell_spec(
        Mood, color = "black", background = "#ffc4c4"
      ),
      TRUE ~ Mood
    )
  ) %>%
  knitr::kable(escape = F)
Team Mood Norwich City FC Jubilant: Norwich City FC are on a roll Brentford FC Jubilant: Brentford FC are on a roll Swansea City AFC Jubilant: Swansea City AFC are on a roll Reading FC Optimistic: Reading FC are doing well Watford FC Optimistic: Watford FC are doing well AFC Bournemouth Optimistic: AFC Bournemouth are doing well Middlesbrough FC Optimistic: Middlesbrough FC are doing well Blackburn Rovers FC Optimistic: Blackburn Rovers FC are doing well Stoke City FC Ambivalent: Stoke City FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Bristol City FC Ambivalent: Bristol City FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Preston North End FC Ambivalent: Preston North End FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Barnsley FC Ambivalent: Barnsley FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Millwall FC Ambivalent: Millwall FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Cardiff City FC Ambivalent: Cardiff City FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Luton Town FC Ambivalent: Luton Town FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Queens Park Rangers FC Ambivalent: Queens Park Rangers FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Huddersfield Town AFC Ambivalent: Huddersfield Town AFC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Nottingham Forest FC Ambivalent: Nottingham Forest FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Coventry City FC Ambivalent: Coventry City FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Rotherham United FC Ambivalent: Rotherham United FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Derby County FC Ambivalent: Derby County FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Birmingham City FC Ambivalent: Birmingham City FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Sheffield Wednesday FC Ambivalent: Sheffield Wednesday FC aren’t doing well, but hey - at least they aren’t Wycombe Wanderers FC Wycombe Wanderers FC Doldrums: Wycombe Wanderers FC are doing poorly. Avoid supporters at all costs.

Metrics - Team

metrics_team <- metrics %>%
  filter(team == select_team_interest)

metrics_team_summary <- metrics_team %>% select(team,crest,metric_mood)

metrics_team %>%
  select(-c(metric_mood_numeric,metric_mood)) %>%
  pivot_longer(starts_with("metric"),
               names_to = "Variable",
               values_to = "Modifier"
               ) %>%
  mutate(
    Effect = case_when(
      str_detect(Modifier, "\\+") ~ "Positive",
      str_detect(Modifier, "\\-") ~ "Negative",
      TRUE ~ "Neutral"
    )
  ) %>%
  select(
    Effect,Modifier
  ) %>% arrange(Effect) %>%
  mutate(
    Effect = case_when(
      Effect == "Negative" ~ cell_spec(
        Effect, color = "white", bold = TRUE, background = "#F66E5CFF"
        ),
      Effect == "Positive" ~ cell_spec(
        Effect, color = "white", bold = TRUE, background = "#228B22"
      ),
      TRUE ~ Effect
    )
  ) %>%
  knitr::kable(escape = F)
Effect Modifier Negative - so so season Negative - conceded more than scored Positive \++ recent wins

epijim/FootballData documentation built on March 3, 2021, 11:52 p.m.