Introducción a WorldFootballR (I)
Análisis de Datos Futbolísticos en R
Introducción a WorldFootballR (I)
Análisis de Datos Futbolísticos en R
Introducción
**WorldfootballR **es un paquete desarrollado por jaseviz que permite acceder y analizar datos relacionados con el fútbol a nivel mundial proporcionando acceso a datos de partidos, ligas, jugadores, equipos y competiciones de todo el mundo. De este modo, se tiene disponible información detallada sobre los partidos, incluyendo la alineación, las estadísticas de los jugadores y los eventos del partido, así como a datos sobre la tabla de clasificación, estadísticas de jugadores y equipos, y datos históricos de partidos y ligas.
Para su instalación tan solo es necesario utilizar el siguiente comando.
install.packages("worldfootballR")
Se puede acceder al repositorio del paquete en el siguiente enlace de Github: https://github.com/JaseZiv/worldfootballR_data
Funciones Principales a nivel Partido
WorldfootballR consta de una amplia gama de funciones para trabajar con datos de FBref, Transfermarkt, Understat y Fotmob. Algunas de las funciones más destacadas incluyen la descarga de datos de partidos de fútbol en vivo, el análisis de estadísticas de equipos y jugadores, la comparación de equipos y la generación de visualizaciones gráficas.
En este breve tutorial se va a explicar cómo trabajar con datos de FBref. Para usar estas funciones es necesario cargar primero el paquete (y para el manejo de los marcos de datos recomiendo usar también **Tidyverse**).
library(tidyverse)
library(worldfootballR)
Por ejemplo, para extraer los datos de los resultados de los partidos de la Liga en 2020, bastaría con usar el siguiente código:
liga_2020 <- fb_match_results(country = "ESP",
gender = "M",
season_end_year = 2020,
tier = "1st")
glimpse(liga_2020)
También se podrían extraer estos datos para la Liga femenina, si bien en este caso hay limitaciones en el histórico, por lo que habría que cambiar la temporada a la actual.
ligaF_2023 <- fb_match_results(country = "ESP",
gender = "F",
season_end_year = 2023,
tier = "1st")
glimpse(ligaF_2023)
Se puede ampliar esta búsqueda para obtener datos de varias temporadas, ligas, divisiones e incluso sexo.
big_5_2023 <- fb_match_results(country = c("ENG", "ESP", "ITA", "GER", "FRA"),
gender = c("M", "F"),
season_end_year = 2023,
tier = "1st")
glimpse(big_5_2023)
Mediante fb_match_report() se puede acceder a información adicional sobre los partidos, aunque sólo la proporcionará para un solo partido, no para toda la temporada. Por ejemplo, si queremos ver el partido entre Real Madrid y Atlético de Madrid de Copa del Rey de la temporada 2022/2023 se habría de escribir:
ATM_vs_RM_report <- fb_match_report(
"https://fbref.com/en/matches/1160e7f1/El-Derbi-Madrileno-Real-Madrid-Atletico-Madrid-January-26-2023-Copa-del-Rey"
)
glimpse(ATM_vs_RM_report)
Otra función interesante es fb_match_lineups(), que devuelve las alineaciones de un partido dado, indicando además si un jugador está en el once inicial o ha entrado desde el banquillo. Además, muestra algunas estadísticas de los jugadores como su nación, su edad (en años y número de de días), el número de minutos jugados, su posición, los goles, asistencias o tarjetas recibidas a lo largo del partido. Continuando con el derbi madrileño de este año en Copa del Rey, tenemos los siguientes resultados:
ATM_vs_RM_lineups <- fb_match_lineups(
"https://fbref.com/en/matches/1160e7f1/El-Derbi-Madrileno-Real-Madrid-Atletico-Madrid-January-26-2023-Copa-del-Rey"
)
glimpse(ATM_vs_RM_lineups)
Por otra parte, a través de la función fb_match_shootings() se puede profundizar en los datos referentes a disparos y jugadas de creación de peligro. Esto incluye datos a nivel de detalle como el resultado de la jugada, el minuto en el que se produjo, la distancia respecto a la portería, el jugador que la generó, la parte con la que impactó este jugador, su receptor en caso de que fuera un pase clave, su interceptor del equipo contrario si la jugada fue interceptada y estadísticas de interés como los goles esperados. En este caso, para la Copa del Rey estos datos no están disponibles, así que como ejemplo podemos tomar el histórico partido de la Premier de esta temporada 2022/2023 entre Liverpool y Manchester United.
LIV_vs_MU_shooting <- fb_match_shooting(
"https://fbref.com/en/matches/756e8036/North-West-Derby-Liverpool-Manchester-United-Marzo-5-2023-Premier-League"
)
glimpse(LIV_vs_MU_shooting)
Cabe mencionar que se pueden añadir varios partidos en un vector y suministrar este vector a la función anterior para obtener las jugadas de creación de varios partidos. Por ejemplo, si queremos seguir el rendimiento ofensivo de los últimos partidos del Arsenal (que pueden costarle la Premier) se haría lo siguiente:
ARS_off <- fb_match_shooting(
c(
"https://fbref.com/en/matches/9bb3a778/Newcastle-United-Arsenal-Mayo-7-2023-Premier-League",
"https://fbref.com/en/matches/2d551ff5/North-West-London-Derby-Arsenal-Chelsea-Mayo-2-2023-Premier-League",
"https://fbref.com/en/matches/00a73645/Manchester-City-Arsenal-Abril-26-2023-Premier-League",
"https://fbref.com/en/matches/12efc7dd/Arsenal-Southampton-Abril-21-2023-Premier-League"
)
)
glimpse(ARS_off)
A través de fb_match_summary() se pueden estudiar los principales eventos que han ocurrido a lo largo del partido, incluyendo goles, sustituciones y tarjetas entre otros. En el siguiente ejemplo se muestra cómo utilizar esta función para cargar el resumen del partido de vuelta en Champions League del Real Madrid frente al París Saint-Germain de la temporada 2021/2022.
RM_vs_PSG_summary <- fb_match_summary(
"https://fbref.com/en/matches/9a3684d8/Real-Madrid-Paris-Saint-Germain-March-9-2022-Champions-League"
)
glimpse(RM_vs_PSG_summary)

Tifo expuesto en el partido de Champions League entre Real Madrid y París Saint-Germain (Santiago Bernabéu)
Por último, se pueden seleccionar estadísticas avanzadas de los partidos por medio de la función fb_advanced_match_stats(), si bien estas estadísticas solamente estarían para las grandes ligas y competiciones europeas de momento. Las opciones se establecen con stat_type y van desde un resumen global del partido hasta información sobre paradas y posesión. Al igual que con la función anterior, se pueden estudiar varios partidos a la vez. En este caso, nos vamos a fijar en la defensa del Barcelona frente al Inter de Milán en fase de grupos de la presente Champions League.
advanced_match_stats_BAR <- fb_advanced_match_stats(
match_url = "https://fbref.com/en/matches/fac347dd/Barcelona-Internazionale-Octubre-12-2022-Champions-League",
stat_type = "defense",
team_or_player = "team"
)
glimpse(advanced_match_stats_BAR)
Esta función, como habrás podido observar, permite también estudiar el partido de cada jugador mediante el parámetro team_or_player.
Espero que te haya gustado la lectura. ¡Nos vemos en el próximo artículo!
메타데이터
- post_id
- ee64ecc35f3e
- slug
- introducción-a-worldfootballr-ee64ecc35f3e
- url
- https://medium.com/@angnar/introducci%C3%B3n-a-worldfootballr-ee64ecc35f3e
- canonical_url
- https://medium.com/@angnar/introducci%C3%B3n-a-worldfootballr-ee64ecc35f3e
- author_url
- https://medium.com/@angnar
- status
- ok
- fetched_at
- 2026-06-24 11:06:28