knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%", eval = FALSE ) set.seed(1992) library(soccercolleagues)
A proof-of-concept R package to help you find:
Read more in the accompanying blog post.
This package is dependent on the excellent {worldfootballR} package by Jason Zivkovic, which helps fetch player data from Transfermarkt.
[Insert gif of Kieran Dyer and Lee Bowyer fighting as Newcastle team mates]
You can install the package from GitHub. It uses the base R pipe (|>
) internally, so you'll need R >=v4.1.
remotes::install_github("matt-dray/soccercolleagues") library(soccercolleagues)
Example: fetch all players from all seasons of the English Premier League. This will take several minutes.
epl_players <- get_players( seasons = 1992:2020, country = "England" ) sample_n(epl_players, 5) |> select(player_name, team_name, season)
## # A tibble: 5 × 3 ## player_name team_name season ## <chr> <chr> <chr> ## 1 Rob Lee newcastle-united 1998 ## 2 Gordon Durie tottenham-hotspur 1992 ## 3 Cheikhou Kouyaté west-ham-united 2017 ## 4 Daniel James swansea-city 2016 ## 5 Julian Watts sheffield-wednesday 1995
From this, you can isolate all the team mates for a given player, or all the common team mates for several named players for the teams and season in which they played together.
get_colleagues( epl_players, c("Gary Neville", "Phil Neville") ) |> glimpse()
## Rows: 880 ## Columns: 12 ## $ focus_name <chr> "Gary Neville", "Gary Neville", "Gary Neville", "Gary Neville", … ## $ player_name <chr> "Kevin Pilkington", "Gary Walsh", "Peter Schmeichel", "Colin Mur… ## $ player_pos <chr> "Goalkeeper", "Goalkeeper", "Goalkeeper", "Centre-Back", "Right-… ## $ player_age <dbl> 18, 24, 28, 16, 28, 26, 31, 27, 18, 24, 18, 23, 17, 17, 17, 17, … ## $ nationality <chr> "England", "England", "Denmark", "Northern Ireland", "England", … ## $ in_squad <dbl> 1, 16, 46, 0, 36, 46, 47, 48, 0, 45, 45, 40, 3, 0, 1, 2, 30, 10,… ## $ appearances <dbl> 0, 1, 46, 0, 35, 45, 47, 47, 0, 45, 45, 30, 1, 0, 0, 1, 29, 7, 2… ## $ goals <dbl> 0, 0, 0, 0, 1, 5, 5, 1, 0, 6, 11, 3, 0, 0, 0, 0, 1, 1, 9, 9, 15,… ## $ minutes_played <dbl> 0, 90, 4170, 0, 3102, 3932, 4229, 4260, 0, 3890, 3871, 1546, 25,… ## $ team_url <chr> "https://www.transfermarkt.com/manchester-united/startseite/vere… ## $ team_name <chr> "manchester-united", "manchester-united", "manchester-united", "… ## $ season <chr> "1992", "1992", "1992", "1992", "1992", "1992", "1992", "1992", …
Sample from all the current and former team mates of a named player or players. Sampling is weighted by total playing time, so well-known players are more likely to arise.
sample_colleagues( all_players = epl_players, players = c( "Shay Given", "Dwight Yorke", "El-Hadji Diouf", "Matthew Upson", "Leighton Baines" ) )
## [1] "Emile Heskey"
This is especially satisfying if they only have one player in common.
In the spirit of the 'pub quiz' nature of this, there's also an extremely proof-of-concept Shiny app available with open_colleagues_quiz()
. You'll need to install {shiny} and {shinyjs} from CRAN before you use it.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.