EUROLEAGUE DATABASE Description: | La Euroliga mola; analizando los datos más interesantes para los espectadores del baloncesto europeo.

trabajo BigData
Euroleague
Baloncesto
Autorcitos
Afiliación

Jordi Gomar Sancho (gosanjor@alumni.uv.es)

Joan Lluís Garcia Rodriguez (jogaro9@alumni.uv.es)

Fecha de Publicación

30 de diciembre de 2024

Resumen
Analizando la Euroliga, sus jugadores y sus equipos en relación a distintas estadísticas del baloncesto.

INTRODUCCIÓN

Vamos a utilizar el paquete euroleaguer. Este paquete utiliza una serie de funciones para descargar distintos datos de la Euroliga de internet. Nosotros nos centraremos básicamente en 4, la historia de la competición , el número de jornadas de la competición, las estadísticas individuales de los jugadores y las estadísticas de los distintos equipos, todos estos a lo largo de las dos décadas de datos que contiene el paquete. Mediante este vamos a analizar las estadísticas de equipos y jugadores que integran la competición de baloncesto de la Euroliga. Para ello realizaremos un análisis de datos que nos han parecido interesantes en relación con estadísticas esenciales del baloncesto, así como la historia triunfos de la competición, entre otras cosa.

Los datos se pueden cargar en la memoria de de R/RStudio de esta forma:

Código
# install.packages("euroleaguer")
library(euroleaguer)

Además hemos utilizado estos paquetes para realizar el estudio:

Código
library(tidyverse)
library(plotly)
library(knitr)
library(kableExtra)
library(gganimate)
library(DT)

¿QUÉ EQUIPOS HAN SIDO MÁS GANADORES?

Empezamos el estudio analizando que equipos han ganado más veces el campeonato y para ello mostramos la frecuencia de cada equipo en conseguir un título de la euroliga.La clasificación de títulos adquiridos por los equipos que componen la euroliga es la siguiente:

-Primero lo mostramos en una tabla;

Código
Competicion <- euroleaguer::getCompetitionHistory("E")
Ganadores <- Competicion |> select(Name , Year , WinnerCode , Ganador = WinnerEditorialName) |>
  drop_na() |>
  group_by(Ganador) |>
  summarise(Copas = n()) |>
  arrange(desc(Copas)) |> 
  ungroup()

knitr::kable(Ganadores) |> 
  kableExtra::kable_styling(bootstrap_options = "striped", 
                            full_width = F, 
                            position = "float_left" , 
                            fixed_thead = list(enabled = T , background = "#A43B32"))
Ganador Copas
CSKA 4
Panathinaikos 4
Maccabi 3
Real 3
Barca 2
Efes 2
Olympiacos 2
Fenerbahce 1
Virtus 1

-Ahora, mostramos los mismo datos en un gráfico de barras para que sea más visual.

Código
Competicion <- Competicion |> select(Name , Year ,  WinnerCode , WinnerEditorialName) |>
  drop_na()
p <- Competicion |> ggplot(aes(x = WinnerCode)) + 
  geom_bar(aes(fill = WinnerEditorialName)) + 
  labs(title = "Campeonatos Euroliga de Baloncesto 2000-2022" ,
       subtitle = "(diferenciando cada equipo por color)", 
       caption = "Datos provenientes del pkg Euroleaguer" , 
       x = "Equipos" , 
       y = "Campeonatos" ,
       fill = "Nombre de los equipos")

p + theme_classic()

Podemos observar el CSKA, en los años 2005-06, 2007-08, 2015-16 y 2018-19, junto con el Panathianikos de Atenas, en las temporadas 2001-02, 2006-07, 2008-2009 y 2010-11, son los equipos que más campeonatos han ganado en la historia de la competición. Cabe destacar que el equipo griego ganó la Euroliga de esta pasada temporada, por lo tanto contaría con una quinta copa que no aparece en los datos del paquete. Se puede apreciar también que hay dos equipos españoles que han ganado la euroliga en las últimas dos décadas, el Barcelona y el Madrid, estando este último por delante del primero en campeonatos conseguidos. El Real Madrid se adelantó al Barcelona en la temporada 2022-23, tras vence al Olimpiacos B.C en un apretado final (78-79 fue el resultado).


Equipo griego celebrando la victoria de la Final Four de Berlín, con su entrenador (Ergin Ataman) y el capitán del equipo y MVP de la F4 (Kostas Sloukas).


¿CÓMO HA EVOLUCIONADO EL NÚMERO DE JORNADAS DE LA EUROLIGA A LO LARGO DE LAS TEMPORADAS?

Código
rounds <- getCompetitionRounds(season_code = paste0("E" , 2000:2023))

df <- rounds |> select(SeasonCode , Round) |> 
  separate(SeasonCode , c("Letra" , "Year") , 1) |> 
  select(!Letra) |> 
  group_by(Year) |> 
  slice_max(Round , n = 1) |> 
  ungroup()

años <- c(2000:2023)

df <- df |> cbind(años) |> 
  mutate(Year = NULL)

p <- df |> ggplot(mapping = aes(x = años , y = Round)) + 
  geom_line(color = "#FDAA65" , size = 1.5) +
  geom_point(color = "#EEB78D" , alpha = 0.7 , aes(size = Round) , show.legend = FALSE) + 
  scale_x_continuous(breaks = seq(2000 , 2023 , by = 1)) +
  scale_size(range = c(4, 10)) + 
  labs(title = "Evolución del número de Jornadas por temporada" ,
       subtitle = "(incluyendo la Fase Regular y los playoffs)" ,
       x = "Temporadas" , 
       y = "Número de Jornadas" , 
       caption = "Datos provenientes del pkg Euroleaguer") +
  theme_minimal() + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8),
        plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
        axis.title.x = element_text(size = 13, hjust = 1, vjust = 0),
        axis.title.y = element_text(size = 13, hjust = 1, vjust = 1),
        plot.caption = element_text(hjust = 0.5), 
        panel.grid.major = element_line(colour = "#F8F7E5", linetype = "dashed"),
        panel.background = element_rect(fill = "#CBE9D6"),
        panel.grid.minor = element_blank(),
        axis.text = element_text(family = "serif", size = 9, colour = "gray17"))

p_animated <- p + transition_reveal(años) +
  enter_fade() + 
  exit_fade()

animate(p_animated, nframes = 200, fps = 20) 

Desde la temporada 2000-2001, la Euroliga ha evolucionado notablemente en su formato y organización. En sus primeros años, la competición fue transformándose de un torneo organizado por la FIBA a una liga independiente bajo la ULEB. En 2004-2005, se introdujeron las invitaciones a equipos y comenzó el sistema de licencias A, permitiendo a algunos clubes participar de forma directa. En 2009-2010 se implementó la fase de “Top 16”, reduciendo los equipos a 16, lo que incrementó la competitividad. A partir de 2016, la Euroliga adoptó un formato fijo de 16 equipos, donde todos juegan una liga regular a doble vuelta. La pandemia de 2020 causó ajustes en el calendario, pero en 2021 la competición volvió a la normalidad. En la actualidad (2023-2024), la Euroliga mantiene el formato de liga regular con 34 partidos y los playoffs, con un sistema de licencias A que asegura la participación de los equipos más importantes, consolidando su posición como la principal liga de baloncesto en Europa.

¿ QUIENES SON LOS PRINCIPALES PROTAGONISTAS DE ESTA COMPETICIÓN?

Código
#- Definimos el tema del gráfico anterior como nuestro tema por defecto
my_theme <- theme_minimal() + 
  theme(axis.text.x = element_text(hjust = 1, size = 8),
        plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
        axis.title.x = element_text(size = 13, hjust = 1, vjust = 0),
        axis.title.y = element_text(size = 13, hjust = 1, vjust = 1),
        plot.caption = element_text(hjust = 0.5), 
        panel.grid.major = element_line(colour = "#F8F7E5", linetype = "dashed"),
        panel.background = element_rect(fill = "#CBE9D6"),
        panel.grid.minor = element_blank(),
        axis.text = element_text(family = "serif", size = 9, colour = "gray17"))

¿La edad impide jugar a baloncesto?

Código
#- Una vez mostrados los equipos que más y menos han ganado  y la evolución del número de jornada vamos a pasar a analizar estadísticas individuales y por equipos
df <- getPlayerStats("E2023")
df <- df |> drop_na()
Código
#- primer gráfico
Player_stats <- df |> filter(StatisticMode == "perGame") |> 
  select(StatisticMode , PlayerName , PlayerAge , TeamName , PIR , PTS) |>
  mutate(categorias_por_puntos = as_factor(ntile(PTS , n = 3))) |>
  mutate(categorias_por_puntos = case_when( 
    categorias_por_puntos == 1 ~ "PP<5.5",
    categorias_por_puntos == 2 ~ "5.5<PP<9.3" ,
    categorias_por_puntos == 3 ~ "9.3<PP")) |> 
  arrange(desc(PTS))
  
P <- Player_stats |> ggplot(mapping = aes(x = PlayerAge , y = PIR)) +
  geom_point(aes(color = categorias_por_puntos)) +
  geom_smooth(color = "orange" ) + 
  labs(title = "PIR EN RELACIÓN A LA EDAD DE LOS JUGADORES" ,
       subtitle = "Temporada 2023-24" , 
       caption = "Datos provenientes del pkg euroleaguer" , 
       x = "Edad" , 
       y = "PIR" , 
       color = "Puntos por partido") +
  scale_color_manual(values = c("#A85458" , "#7F000D" , "#DAB7B8")) + 
  my_theme
  
       
ggplotly(P)

A través de este gráfico y observando la línea suavizada que modeliza las observaciones, notamos una tendencia creciente de la eficiencia, medida en términos de PIR, en función de la edad. Además, hemos dividido las distintas observaciones por categorías, cada categoría define un nivel de Puntos por partido de los distintos jugadores, notando también que a mayor promedio de puntos por partido mayor es la PIR.

Teniendo en cuenta la edad de los jugadores, se aprecia que aquellos jugadores de mediana edad (en términos deportivos) tienen un mayor rendimiento. Esto tiene sentido porque estos jugadores cuentan un alto entendimiento del juego y tienen ya un físico más desarrollado, el cual se suele obtener en los atletas de este calibre cuando estan llegando a un rango de edad comprendido entre los 25-30. Por tanto los mejores jugadores suelen estar entre los 25 y los 30 años, que es cuando alcanzan su máximo potencial físico y táctico.


¿Qué jugadores son los más efectivos?

Código
df <- df |> filter(StatisticMode == "perGame") |> 
  select(StatisticMode , PlayerName , MIN , PTS , `2PM` , `2PA` , `3PM` , `3PA`) |> 
  mutate(total_intentos = `2PA` + `3PA`) |>
  mutate(total_aciertos = `2PM` + `3PM`) |> 
  mutate(porcentaje_de_acierto = total_aciertos/total_intentos) 
  
df <- df |> select(PlayerName , MIN , PTS , porcentaje_de_acierto) |> 
  mutate(categoria_porcentaje = as_factor(ntile(porcentaje_de_acierto , n = 3))) |> 
  arrange(desc(porcentaje_de_acierto)) |> 
  mutate(comentarios_Andres_Montes = case_when( 
    categoria_porcentaje == 3  ~ "¿Por qué todos los
    jugones sonríen igual?",
    categoria_porcentaje == 2  ~ "Sensacional" , 
    categoria_porcentaje == 1  ~ "El club del ladrillo"))

df2 <- df |> arrange(desc(PTS)) |>
  filter(PTS >= 15.0) |> 
  filter(!(PlayerName == "BALDWIN IV, WADE" | PlayerName == "NUNN, KENDRICK"))

df3 <- df |> filter(PlayerName == "BALDWIN IV, WADE" | PlayerName == "NUNN, KENDRICK")

p <- df |>  ggplot(mapping = aes(x = MIN , y = PTS , color = comentarios_Andres_Montes)) + 
  geom_point() + 
  labs(title = "Gráfico 3: Relación entre Puntos por partido y minutos por partido. 2023-24" , 
       subtitle = "(categorizando los porcentajes de campo con comentarios del famoso periodista Andrés Montés)" , 
       caption = "Datos provenientes del pkg Euroleaguer" , 
       x = "Minutos PP" , 
       y = "Puntos PP" , 
       color = "Porcentajes de campo") + 
  geom_text(data = df2 , aes(label = PlayerName) , color = "black" , size = 2 , hjust = "right" , vjust = "top") + 
  geom_text(data = df3 , aes(label = PlayerName) , color = "black" , size = 2 , hjust = "right" , vjust = "bottom") +
  scale_color_manual(values = c("#7F000D" , "#DAB7B8" , "#A85458")) +
  my_theme + 
  theme(legend.position = "bottom" ,
        legend.title.position = "top" , 
        legend.title = element_text(face = "bold" , hjust = 0.5))

p

En este gráfico de puntos hemos representado los puntos por partido en relación a los minutos por partido de cada jugador en la temporada 2023-24. Claramente se observa una correlación entre minutos y puntos, es decir cuantos más minutos acumula un jugador, más puntos anota. También hemos representado estas observaciones entorno a tres categorías, definidas por la variable categórica de los tres niveles de porcentajes de campo. Estos tres niveles han sido definidos por comentarios de Andrés Montés un gran periodista y locutor deportivo español. Las tres categorías son ¿Por qué todos los jugones sonríen igual? , Sensacional y el club del ladrillo (mejor , medio , peor).

Podemos observar que cuando más responsabilidad tienen los distintos jugadores, más minutos asumen y por lo tanto más tiros y más posibilidades de aumentar su anotación, pero de la misma manera que pueden anotar, estos también pueden cometer errores. Esto representa el hecho de que los jugadores más anotadores asumen muchos tiros, asumiendo más riesgo y por tanto cometiendo más fallos, por ello su porcentaje suele estar por debajo del 50%. Por otra parte aquellos jugadores con un rol más secundario suelen tener mejores porcentajes, también se debe tener en cuenta a los jugadores interiores respecto a los exteriores, ya que los primeros asumen tires menos arriesgados, así que tendrán, generalmente, un mejor porcentaje que cualquier jugador exterior.

Podemos observar el ejemplo claro de los jugadores con más anotación y también más minutos, como Mike James (AS MONACO) y Markus Howard (BASKONIA), estos son los máximos anotadores de la competición, pero a su vez se puede ver que sus porcentajes de acierto son dignos del Club del Ladrillo (según Andrés Montés). Realmente, para el tipo de jugadores que son Mike James y Markus Howard y la cantidad de tiros que asumen, su porcentaje no es tan bajo, no está por debajo del 40%, pero aún así podría esperarse un mejor porcentaje para dos jugadores tan anotadores y esa expectativa no se cumple sustancialmente.


Mike James (Mónaco)


Markus Howard (Baskonia)


Andrés Montés


Desmientdo el mito de que los anotadores no asisten

Código
df <- getPlayerStats(season_code = "E2023" , statistic_mode = "perGame")

Player_stats <- df |> select(SeasonCode , PlayerName , TeamName , PTS , AST) |>
  drop_na() |> 
  separate(SeasonCode , c("E" , "Year") , sep = 1) |> 
  mutate(E = NULL) |> 
  select(PTS , AST) |> 
  arrange(desc(PTS))

p <- Player_stats |> ggplot(mapping = aes(x = PTS , y = AST)) +
  geom_smooth(aes(color = "loess") , method = "loess", se = FALSE) + 
  geom_smooth(aes(color = "lm")    , method = "lm"   , se = FALSE) +
  labs(title = "Relación entre los Puntos y las Asistencias. Temporada 2023-24" , 
       subtitle = "(en términos de puntos y asistencias por partido de los jugadores)" , 
       x = "PUNTOS" , 
       y = "ASISTENCIAS" , 
       caption = "Datos provenientes del pkg euroleaguer") +
  scale_color_manual(values = c("#7C4D79" , "#2A5783")) + 
  my_theme + theme(panel.background = element_rect(fill = "#AADD9C"))

p

En este gráfico mostramos la relación entre los puntos y las asistencias por partido de los jugadores de la Euroliga en la temporada 2023-24. Graficamos una relación lineal y otra alisada. Dentro la competición, podemos desmentir que los jugadores que más anotan no asisten. Los mismos que anotan, acaparan mucho balón y por tanto acaban también realizando un gran número de asistencias. Básicamente, aquellos jugadores con la mayor parte de la carga ofensiva del equipo, aunque no sean puros generadores de juego y sean anotadores, ofrecerán asistencias al equipo, por el simple hecho de aglutinar mucho el balón, atraer defensores y liberar compañeros por esa atracción defensiva que genera su presencia. La conclusión es que anotar y asistir no es incompatible.

¿Quiénes son los jugadores más eficientes?

Código
df <- getPlayerStats(season_code = "E2023" , statistic_mode = "perGame")

df <- df |> slice_max(PIR , n = 10) |> 
  select(Jugador = PlayerName , Edad = PlayerAge , Equipo = TeamName , 11 , 13:34)
  
Tabla <- df |> kable(align = "c", 
                     caption = "Estadísticas de los 10 jugadores con mejor PIR. Temporada 2023-24",
                     digits = 2, 
                     format.args = list(decimal.mark = ",", big.mark = ".")) |>
  kable_styling(bootstrap_options = "striped",
                full_width = F, 
                fixed_thead = list(enabled = T , background = "#A43B32")) 


Tabla
Estadísticas de los 10 jugadores con mejor PIR. Temporada 2023-24
Jugador Edad Equipo GP MIN PTS 2PM 2PA 2P% 3PM 3PA 3P% FTM FTA FT% OREB DREB REB AST STL TO BLK BLKA FC FD PIR
LARKIN, SHANE 31 Anadolu Efes Istanbul 35 31,65 16,8 2,8 5,1 54.8% 2,5 6,4 39.1% 3,7 4,1 90.8% 0,2 2,7 2,8 5,1 1,1 1,9 0,1 0,3 1,4 4,3 19,9
LESSORT, MATHIAS 28 Panathinaikos AKTOR Athens 41 29,68 13,9 5,0 8,0 62.6% 0,0 0,0 0% 4,0 6,5 60.7% 2,3 4,0 6,3 1,4 1,0 1,8 0,9 0,5 2,7 6,7 19,6
JAMES, MIKE 33 AS Monaco 39 31,67 17,9 3,7 7,9 46.8% 2,2 6,0 37.2% 3,8 4,9 77.2% 0,5 3,6 4,1 5,1 1,2 2,1 0,1 0,5 1,8 4,7 19,4
BALDWIN IV, WADE 27 Maccabi Playtika Tel Aviv 30 27,55 17,4 4,2 8,8 48.3% 1,4 3,7 39.1% 4,6 5,5 84.8% 0,3 2,2 2,5 4,9 1,0 2,6 0,2 0,2 1,9 5,5 19,1
EVANS, KEENAN 27 Zalgiris Kaunas 34 27,39 17,3 3,1 5,9 52.5% 2,4 5,6 43.5% 3,8 4,2 89.5% 0,5 2,3 2,8 3,9 1,2 2,3 0,1 0,5 2,4 4,7 18,3
MONEKE, CHIMA 28 Baskonia Vitoria-Gasteiz 34 24,73 13,6 3,6 6,0 60.5% 0,9 2,5 35.3% 3,6 4,7 76.4% 2,1 4,5 6,6 1,4 1,1 2,0 0,5 0,5 1,6 4,4 18,3
SHENGELIA, TORNIKE 32 Virtus Segafredo Bologna 33 27,42 14,5 4,4 7,5 58.5% 0,8 3,0 25.5% 3,5 4,4 78.8% 1,4 3,7 5,0 3,3 1,0 2,7 0,2 0,5 2,5 5,2 17,4
SHIELDS, SHAVON 29 EA7 Emporio Armani Milan 29 30,44 15,7 2,9 5,0 59% 2,6 6,6 38.9% 2,2 2,7 82.1% 0,7 3,1 3,7 2,8 1,3 2,0 0,1 0,2 1,7 3,6 16,8
CAMPAZZO, FACUNDO 32 Real Madrid 37 25,29 11,5 2,4 4,2 57.8% 1,3 4,0 32.2% 2,8 3,2 86.6% 0,6 2,3 2,9 6,5 1,3 2,4 0,0 0,2 2,4 4,5 16,7
NEBO, JOSH 26 Maccabi Playtika Tel Aviv 39 23,73 11,2 4,4 6,5 66.9% 0,0 0,0 0% 2,4 3,4 71.4% 3,1 4,0 7,1 0,6 0,6 0,9 0,9 0,3 1,8 2,5 16,7

En este caso tenemos tenemos una tabla con las estadísticas de los 10 jugadores con mejor PIR de toda la competición en la temporada 2023-24. Estos son los que hemos considerado como los más eficientes de la competición en base al índice PIR (PIR se llama al Índice de Valoración y fue creado en la Liga ACB (En inglés ‘Performance Index Rating’, PIR). Se calcula como: (Puntos + Rebotes + Asistencias + Robos + Tapones + Faltas Recibidas) - (Tiros de Campo Fallados + Tiros Libres Fallados + Pérdidas + Tapones Recibidos + Faltas Realizadas). La PIR seria, básicamente, el balance total de un jugador computando tanto los factores positivos como negativos. Entre esta privilegiada lista encontramos a dos jugadores de el mismo equipo, Maccabi de TelAviv, estos son Wade Baldwin IV y Josh Nebo. Contar con dos jugadores con una PIR por encima de 16 unidades positivas en tu equipo es inusual y increíble a la vez.

El jugador más eficiente de la competición Shane Larkin.

ANOTACIÓN POR COMPULSIÓN

Finalmente, vamos a mostrar a través de los datos de los equipos de la euroliga provenientes del pkg ‘Euroleague’ la creciente tendencia de anotación por parte de los equipos en los últimos años.

Código
Team_Stats <- getTeamLeadStats(season_code = paste0("E" , 2016:2023))
Team_Promedio <- Team_Stats$TeamAveragePerGame

df <- Team_Promedio |> select(-c(Subset , PhaseType)) |> 
  group_by(SeasonCode) |> 
  summarise(MEDIA_PUNTOS = mean(PTS)) |> 
  ungroup() |> 
  separate(SeasonCode , c("E" , "Year") , 1) |> 
  mutate(E = NULL) |> 
  mutate(Crecimiento_anual = MEDIA_PUNTOS - lag(MEDIA_PUNTOS)) |> 
  mutate(Crecimiento_anual_2 = ifelse(is.na(Crecimiento_anual), 0, Crecimiento_anual)) |> 
  mutate(Crecimiento_anual = NULL) |> 
  rename(Crecimiento_Anual_Puntos = Crecimiento_anual_2)

DT::datatable(df)

Aquí se observa que la tendencia es creciente, es decir, cada vez se anotan mád puntos, calculado como el promedio de los puntos por partido de cada uno de los equipos a lo largo de las temporadas 2016-24.

CONCLUSIONES

El baloncesto es un juego que no deja de crecer y evolucionar y, por extensión, la euroliga también. Hemos observado distintas tendencias, como la mayor anotación de los equipos, los bajos porcentajes de aquellos jugadores con mayor peso ofensivo en un equipo respecto de aquellos más secundarios, el aumento del número de jornadas, etc, pero la conclusión a la que hemos llegado es que EL BALONCESTO ES LO MEJOR!!!!


LEYENDAS DE ESTE GRAN DEPORTE




Información sobre la sesión

Abajo muestro mi entorno de trabajo y paquetes utilizados.

current session info

─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.4.1 (2024-06-14 ucrt)
 os       Windows 11 x64 (build 22631)
 system   x86_64, mingw32
 ui       RTerm
 language (EN)
 collate  Spanish_Spain.utf8
 ctype    Spanish_Spain.utf8
 tz       Europe/Madrid
 date     2024-12-30
 pandoc   3.1.11 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 bslib         0.8.0   2024-07-29 [1] CRAN (R 4.4.1)
 cachem        1.1.0   2024-05-16 [1] CRAN (R 4.4.1)
 cli           3.6.3   2024-06-21 [1] CRAN (R 4.4.1)
 clipr         0.8.0   2022-02-22 [1] CRAN (R 4.4.1)
 colorspace    2.1-1   2024-07-26 [1] CRAN (R 4.4.1)
 crayon        1.5.3   2024-06-20 [1] CRAN (R 4.4.1)
 crosstalk     1.2.1   2023-11-23 [1] CRAN (R 4.4.1)
 curl          5.2.2   2024-08-26 [1] CRAN (R 4.4.1)
 data.table    1.16.0  2024-08-27 [1] CRAN (R 4.4.1)
 desc          1.4.3   2023-12-10 [1] CRAN (R 4.4.1)
 details       0.3.0   2022-03-27 [1] CRAN (R 4.4.2)
 digest        0.6.37  2024-08-19 [1] CRAN (R 4.4.1)
 dplyr       * 1.1.4   2023-11-17 [1] CRAN (R 4.4.1)
 DT          * 0.33    2024-04-04 [1] CRAN (R 4.4.1)
 euroleaguer * 0.2.0   2024-02-23 [1] CRAN (R 4.4.2)
 evaluate      1.0.0   2024-09-17 [1] CRAN (R 4.4.1)
 fansi         1.0.6   2023-12-08 [1] CRAN (R 4.4.1)
 farver        2.1.2   2024-05-13 [1] CRAN (R 4.4.1)
 fastmap       1.2.0   2024-05-15 [1] CRAN (R 4.4.1)
 forcats     * 1.0.0   2023-01-29 [1] CRAN (R 4.4.1)
 generics      0.1.3   2022-07-05 [1] CRAN (R 4.4.1)
 gganimate   * 1.0.9   2024-02-27 [1] CRAN (R 4.4.2)
 ggplot2     * 3.5.1   2024-04-23 [1] CRAN (R 4.4.1)
 glue          1.7.0   2024-01-09 [1] CRAN (R 4.4.1)
 gtable        0.3.5   2024-04-22 [1] CRAN (R 4.4.1)
 highr         0.11    2024-05-26 [1] CRAN (R 4.4.1)
 hms           1.1.3   2023-03-21 [1] CRAN (R 4.4.1)
 htmltools     0.5.8.1 2024-04-04 [1] CRAN (R 4.4.1)
 htmlwidgets   1.6.4   2023-12-06 [1] CRAN (R 4.4.1)
 httr          1.4.7   2023-08-15 [1] CRAN (R 4.4.1)
 jquerylib     0.1.4   2021-04-26 [1] CRAN (R 4.4.1)
 jsonlite      1.8.8   2023-12-04 [1] CRAN (R 4.4.1)
 kableExtra  * 1.4.0   2024-01-24 [1] CRAN (R 4.4.2)
 knitr       * 1.48    2024-07-07 [1] CRAN (R 4.4.1)
 labeling      0.4.3   2023-08-29 [1] CRAN (R 4.4.0)
 lattice       0.22-6  2024-03-20 [2] CRAN (R 4.4.1)
 lazyeval      0.2.2   2019-03-15 [1] CRAN (R 4.4.1)
 lifecycle     1.0.4   2023-11-07 [1] CRAN (R 4.4.1)
 lubridate   * 1.9.3   2023-09-27 [1] CRAN (R 4.4.1)
 magick        2.8.4   2024-07-14 [1] CRAN (R 4.4.1)
 magrittr      2.0.3   2022-03-30 [1] CRAN (R 4.4.1)
 Matrix        1.7-0   2024-04-26 [2] CRAN (R 4.4.1)
 mgcv          1.9-1   2023-12-21 [2] CRAN (R 4.4.1)
 munsell       0.5.1   2024-04-01 [1] CRAN (R 4.4.1)
 nlme          3.1-164 2023-11-27 [2] CRAN (R 4.4.1)
 pillar        1.9.0   2023-03-22 [1] CRAN (R 4.4.1)
 pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.4.1)
 plotly      * 4.10.4  2024-01-13 [1] CRAN (R 4.4.1)
 png           0.1-8   2022-11-29 [1] CRAN (R 4.4.0)
 prettyunits   1.2.0   2023-09-24 [1] CRAN (R 4.4.1)
 progress      1.2.3   2023-12-06 [1] CRAN (R 4.4.1)
 purrr       * 1.0.2   2023-08-10 [1] CRAN (R 4.4.1)
 R6            2.5.1   2021-08-19 [1] CRAN (R 4.4.1)
 Rcpp          1.0.13  2024-07-17 [1] CRAN (R 4.4.1)
 readr       * 2.1.5   2024-01-10 [1] CRAN (R 4.4.1)
 rlang         1.1.4   2024-06-04 [1] CRAN (R 4.4.1)
 rmarkdown     2.28    2024-08-17 [1] CRAN (R 4.4.1)
 rstudioapi    0.16.0  2024-03-24 [1] CRAN (R 4.4.1)
 sass          0.4.9   2024-03-15 [1] CRAN (R 4.4.1)
 scales        1.3.0   2023-11-28 [1] CRAN (R 4.4.1)
 sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.4.1)
 stringi       1.8.4   2024-05-06 [1] CRAN (R 4.4.0)
 stringr     * 1.5.1   2023-11-14 [1] CRAN (R 4.4.1)
 svglite       2.1.3   2023-12-08 [1] CRAN (R 4.4.2)
 systemfonts   1.1.0   2024-05-15 [1] CRAN (R 4.4.1)
 tibble      * 3.2.1   2023-03-20 [1] CRAN (R 4.4.1)
 tidyr       * 1.3.1   2024-01-24 [1] CRAN (R 4.4.1)
 tidyselect    1.2.1   2024-03-11 [1] CRAN (R 4.4.1)
 tidyverse   * 2.0.0   2023-02-22 [1] CRAN (R 4.4.1)
 timechange    0.3.0   2024-01-18 [1] CRAN (R 4.4.1)
 tweenr        2.0.3   2024-02-26 [1] CRAN (R 4.4.2)
 tzdb          0.4.0   2023-05-12 [1] CRAN (R 4.4.1)
 utf8          1.2.4   2023-10-22 [1] CRAN (R 4.4.1)
 vctrs         0.6.5   2023-12-01 [1] CRAN (R 4.4.1)
 viridisLite   0.4.2   2023-05-02 [1] CRAN (R 4.4.1)
 withr         3.0.1   2024-07-31 [1] CRAN (R 4.4.1)
 xfun          0.47    2024-08-17 [1] CRAN (R 4.4.1)
 xml2          1.3.6   2023-12-04 [1] CRAN (R 4.4.1)
 yaml          2.3.10  2024-07-26 [1] CRAN (R 4.4.1)

 [1] C:/Users/JOAN/AppData/Local/R/win-library/4.4
 [2] C:/Program Files/R/R-4.4.1/library

──────────────────────────────────────────────────────────────────────────────


Reutilizar