R Markdown

library (tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.1     ✔ purrr   1.0.1
## ✔ tibble  3.1.6     ✔ dplyr   1.1.0
## ✔ tidyr   1.3.0     ✔ stringr 1.5.0
## ✔ readr   2.1.4     ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(dplyr)
library(ggplot2)
library(readxl)
#Lenyendo archivos de Excel teams, stadiums, players, managers, matches, goals y se convierten en dataframe teams, stadiums, players, managers, matches, goals

teams <- read_excel("UEFA Data SP.xlsx", sheet = "teams")
stadiums <- read_excel("UEFA Data SP.xlsx", sheet = "stadiums")
players <- read_excel("UEFA Data SP.xlsx", sheet = "players")
managers <- read_excel("UEFA Data SP.xlsx", sheet = "managers")
matches <- read_excel("UEFA Data SP.xlsx", sheet = "matches")
goals <- read_excel("UEFA Data SP.xlsx", sheet = "goals")
View(teams)
## Warning in system2("/usr/bin/otool", c("-L", shQuote(DSO)),
## stdout = TRUE): running command ''/usr/bin/otool' -L
## '/Library/Frameworks/R.framework/Resources/modules/R_de.so'' had status 1
View(stadiums)
## Warning in system2("/usr/bin/otool", c("-L", shQuote(DSO)),
## stdout = TRUE): running command ''/usr/bin/otool' -L
## '/Library/Frameworks/R.framework/Resources/modules/R_de.so'' had status 1
view(players)
view(matches)
view(goals)

#1.-¿Cuál es la capacidad promedio, mayor y menor de los estadios europeos?

promediosestadios <- stadiums%>%
  summary(CAPACITY)
promediosestadios
##      NAME               CITY             COUNTRY             CAPACITY    
##  Length:86          Length:86          Length:86          Min.   : 4735  
##  Class :character   Class :character   Class :character   1st Qu.:29834  
##  Mode  :character   Mode  :character   Mode  :character   Median :43758  
##                                                           Mean   :45295  
##                                                           3rd Qu.:60800  
##                                                           Max.   :99354

#al aplicar la función summary, es que podemos encontrar el promedio, mayor y menor de los estadios europeos, siendo estos 4,735 el minimo, 45,295 el promedio y 99,354 el maximo.

2.-¿Cuál es el top ten de los estadios europeos con capacidad superior al promedio (obtenido en la pregunta anterior) ?.Despliega Nombre, País y capacidad

estadioscapacidad <- stadiums%>%
  select(NAME, CAPACITY, COUNTRY)%>%
  arrange(desc(CAPACITY))%>%
  head(10)
estadioscapacidad
## # A tibble: 10 × 3
##    NAME              CAPACITY COUNTRY
##    <chr>                <dbl> <chr>  
##  1 Spotify Camp Nou     99354 Spain  
##  2 Wembley Stadium      90000 England
##  3 Signal Iduna Park    81365 Germany
##  4 Stade de France      81338 France 
##  5 Santiago Bernabéu    81044 Spain  
##  6 Luzhniki             80840 Russia 
##  7 Giuseppe Meazza      75923 Italy  
##  8 Allianz Arena        75024 Germany
##  9 Millennium           74500 Wales  
## 10 Old Trafford         74140 England

#En este segundo ejercicio, se pueden ver los 10 estadios con mayor capacidad dentro de la base de datos. Al volver a el primer ejercicio, donde el promedio era de 45,295, comprobamos que los 10 estadios que estan aquí, estan por encima del promedio. Esto se pudo hacer con la función select (para mostrar solo nombre y capacidad), arrange(desc(para mostrar los mas altos)) y finalmente head, para solo mostrar los primeros 10.

3.-¿Cuáles son los 10 equipos con más jugadores de la liga desde 2016 a 2022 y cuántos jugadores tiene cada equipo?. Elimina a los equipos con NA’s.

equiposjugadores <- players %>%
  select(PLAYER_ID, TEAM)%>%
  group_by(TEAM)%>%
  filter(!is.na(TEAM))%>%
  summarise(num_jugadores=n())%>%
  arrange(desc(num_jugadores))%>%
  head(10)
equiposjugadores
## # A tibble: 10 × 2
##    TEAM               num_jugadores
##    <chr>                      <int>
##  1 Borussia Dortmund             48
##  2 Liverpool FC                  46
##  3 Manchester United             44
##  4 Olympiakos Piraeus            42
##  5 Slavia Praha                  39
##  6 Bayern München                38
##  7 Dinamo Kiev                   38
##  8 Ferencvárosi TC               37
##  9 APOEL Nikosia                 35
## 10 FK Krasnodar                  35

#En este tercer ejercicio, mediante el uso de las herramientas select, group_by, filter, summarise, arrange y head, se logro obtener los 10 equipos que mas jugadores han tenido en la competición. Así como lograr acomodarlos de manera descendente. Obtuvimos que el equipo Borussia Dortmund, de alemania, es el equipo que mas jugadores utilizo, con 48.

4.-¿Cuáles son los 10 estadios que recibieron mayor audiencia durante las ligas?. Despliega el estadio, la audiencia, equipo local y visitante.

asistenciaestadios <- matches%>%
  select(STADIUM, ATTENDANCE, HOME_TEAM, AWAY_TEAM)%>%
  arrange(desc(ATTENDANCE))%>%
  head(10)

asistenciaestadios
## # A tibble: 10 × 4
##    STADIUM          ATTENDANCE HOME_TEAM    AWAY_TEAM          
##    <chr>                 <dbl> <chr>        <chr>              
##  1 Spotify Camp Nou      98299 FC Barcelona Liverpool FC       
##  2 Spotify Camp Nou      97183 FC Barcelona Chelsea FC         
##  3 Spotify Camp Nou      96708 FC Barcelona Manchester United  
##  4 Spotify Camp Nou      96290 FC Barcelona Manchester City    
##  5 Spotify Camp Nou      96290 FC Barcelona Paris Saint-Germain
##  6 Spotify Camp Nou      96290 FC Barcelona Juventus           
##  7 Spotify Camp Nou      92346 FC Barcelona Olympique Lyon     
##  8 Spotify Camp Nou      90106 FC Barcelona AS Roma            
##  9 Spotify Camp Nou      90071 FC Barcelona Borussia Dortmund  
## 10 Spotify Camp Nou      86290 FC Barcelona Inter

#En este cuarto inciso, obvtuve que los 10 partidos con mayor asistencia le pertenecen al estadio Spotify Camp nou, esto tiene mucho sentido debido a que en el ejercicio 2 de esta evidencia, se pudo ver que este es el estadio con mayor capacidad. Esto se pudo hacer mediante las funciones select, arrange, y head.

#VISUALIZACIÓN 1 - DISPERSIÓN.

g1 <- matches%>%
  left_join(stadiums, by= c("STADIUM" = "NAME"))
## Warning in left_join(., stadiums, by = c(STADIUM = "NAME")): Each row in `x` is expected to match at most 1 row in `y`.
## ℹ Row 4 of `x` matches multiple rows.
## ℹ If multiple matches are expected, set `multiple = "all"` to silence this
##   warning.
g1
## # A tibble: 767 × 13
##    MATCH_ID SEASON    DATE_TIME      HOME_TEAM AWAY_TEAM STADIUM HOME_TEAM_SCORE
##    <chr>    <chr>     <chr>          <chr>     <chr>     <chr>             <dbl>
##  1 mt1      2021-2022 15-SEP-21 08.… Manchest… RB Leipz… Etihad…               6
##  2 mt2      2021-2022 15-SEP-21 08.… Club Bru… Paris Sa… Jan Br…               1
##  3 mt3      2021-2022 28-SEP-21 08.… Paris Sa… Manchest… Parc d…               2
##  4 mt4      2021-2022 28-SEP-21 08.… RB Leipz… Club Bru… Red Bu…               1
##  5 mt4      2021-2022 28-SEP-21 08.… RB Leipz… Club Bru… Red Bu…               1
##  6 mt5      2021-2022 19-OCT-21 05.… Club Bru… Manchest… Jan Br…               1
##  7 mt6      2021-2022 19-OCT-21 08.… Paris Sa… RB Leipz… Parc d…               3
##  8 mt7      2021-2022 03-NOV-21 08.… RB Leipz… Paris Sa… Red Bu…               2
##  9 mt7      2021-2022 03-NOV-21 08.… RB Leipz… Paris Sa… Red Bu…               2
## 10 mt8      2021-2022 03-NOV-21 08.… Manchest… Club Bru… Etihad…               4
## # … with 757 more rows, and 6 more variables: AWAY_TEAM_SCORE <dbl>,
## #   PENALTY_SHOOT_OUT <dbl>, ATTENDANCE <dbl>, CITY <chr>, COUNTRY <chr>,
## #   CAPACITY <dbl>
ggplot(data = g1,
       mapping = aes(x = CAPACITY, y = ATTENDANCE)) +
  geom_point(alpha =0.2)+
  labs(title= "Correlación entre capacidad de los estadios y asistencia a los partidos. ",
       subtitle = "Gráfica de dispersión",
       x= "CAPACIDAD",
       y= "ASISTENCIA")

#EN ESTA PRIMERA VISUALIZACIÓN, PODEMOS VER UNA GRAFICA DE DISPERSIÓN DONDE SE VEN LA CAPACIDAD Y ASISTENCIA DE LOS ESTADIOS, COMO PODEMOS VER, EN LA MAYORIA DE LOS CASOS, LA CAPACIDAD DEL ESTADIO ES ALCANZADA POR LA ASISTENCIA QUE TUVO (SIGNIFICANDO QUE SE LLENO), ME GUSTARIA RESALTAR QUE SE PUEDEN LLEGAR A VER ASISTENCIAS DE 0, QUE PUEDEN VENIR DE LA PANDEMIA QUE SE TUVO.

#EL HACER UNA GRAFICA DE LINEAS, NO SE PUDO REALIZAR, DEBIDO QUE A DIFERENCIA DE LA BASE DE DATOS NYCFLIGHTS, EN ESTA NO SE TIENEN FECHAS, POR LO CUAL NO TENEMOS VARIABLES DE NATURALEZA SECUENCIAL.

#VISUALIZACIÓN 2 BARRAS

partidosanfield <- matches %>%
  filter(STADIUM =="Anfield")
partidosanfield
## # A tibble: 26 × 10
##    MATCH_ID SEASON    DATE_TIME      HOME_TEAM AWAY_TEAM STADIUM HOME_TEAM_SCORE
##    <chr>    <chr>     <chr>          <chr>     <chr>     <chr>             <dbl>
##  1 mt14     2021-2022 15-SEP-21 08.… Liverpoo… AC Milan  Anfield               3
##  2 mt20     2021-2022 03-NOV-21 08.… Liverpoo… Atlético… Anfield               2
##  3 mt21     2021-2022 24-NOV-21 08.… Liverpoo… FC Porto  Anfield               2
##  4 mt106    2021-2022 08-MAR-22 08.… Liverpoo… Inter     Anfield               0
##  5 mt120    2021-2022 13-APR-22 08.… Liverpoo… SL Benfi… Anfield               3
##  6 mt122    2021-2022 27-APR-22 08.… Liverpoo… Villarre… Anfield               2
##  7 mt165    2020-2021 27-OCT-20 08.… Liverpoo… FC Midtj… Anfield               2
##  8 mt169    2020-2021 25-NOV-20 08.… Liverpoo… Atalanta  Anfield               0
##  9 mt171    2020-2021 01-DEC-20 08.… Liverpoo… AFC Ajax  Anfield               1
## 10 mt245    2020-2021 14-APR-21 08.… Liverpoo… Real Mad… Anfield               0
## # … with 16 more rows, and 3 more variables: AWAY_TEAM_SCORE <dbl>,
## #   PENALTY_SHOOT_OUT <dbl>, ATTENDANCE <dbl>
ggplot(data = partidosanfield, mapping = aes(x = HOME_TEAM_SCORE)) +
  geom_histogram()+ geom_histogram(color = "green")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

  labs(title= "GOLES LIVERPOOL LOCAL",
       subtitle = "Histograma",
       x="Goles liverpool",
       y="frecuencia.")
## $x
## [1] "Goles liverpool"
## 
## $y
## [1] "frecuencia."
## 
## $title
## [1] "GOLES LIVERPOOL LOCAL"
## 
## $subtitle
## [1] "Histograma"
## 
## attr(,"class")
## [1] "labels"

#EN ESTA SEGUNDA VISUALIZACIÓN PODEMOS VER LOS GOLS QUE ANOTO EL EQUIPO LIVERPOOL EN SUS PARTIDOS DE LOCAL, A TRAVES DE TODAS LAS TEMPORADAS. ESTO NOS PERMITE VER EL RANGO DE GOLES QUE ANOTA, Y CUALES SON LA CANTIDAD DE GOLES QUE MAS ANOTA CUANDO ES LOCAL (SIENDO ESTE VALOR 2)

#VISUALIZACIÓN 3 HISTOGRAMAS.

g3 <- players
  ggplot(data = g3, mapping = aes(x = JERSEY_NUMBER)) + geom_histogram(color = "purple")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 316 rows containing non-finite values (`stat_bin()`).

#EN ESTA TERCERA VISUALIZACIÓN, PODEMOS VER LA CANTIDAD DE VECES QUE SE REPITE EL NUMERO EN DORSAL DE CADA JUGADOR, AL ANALIZARLA, NOS DAMOS CUENTA QUE LOS NUMERO QUE MAS SE REPITEN VAN DESDE EL 1-30, Y DESPUES SE VE UNA REDUCCIÓN CONSIDERABLE, DANDONOS A ENTENDER QUE LOS NUMEROS POR ENCIMA DE 40, NO SON DE MUCHO AGRADO PARA LOS JUGADORES. #VISUALIZACIÓN 4 - FACETS

estadiositalia <- matches %>%
  left_join(stadiums, by= c("STADIUM" = "NAME"))%>%
  filter(COUNTRY == "Italy")
## Warning in left_join(., stadiums, by = c(STADIUM = "NAME")): Each row in `x` is expected to match at most 1 row in `y`.
## ℹ Row 4 of `x` matches multiple rows.
## ℹ If multiple matches are expected, set `multiple = "all"` to silence this
##   warning.
ggplot(data = estadiositalia, mapping = aes(x = AWAY_TEAM_SCORE)) +
  geom_histogram(binwidth = 1, color = "white") +
  facet_wrap(~ STADIUM, nrow = 2)+
  labs(title="GOLES DE VISITANTE EN ITALIA",
       subtitle = "Histogramas",
       x="GOLES VISITANTE",
       y="Frecuencia")