Objetivo

Explorar y generar tablas de distribución del conjunto de datas FIFA

Descripcion

Explorar determinando tablas y visualización de datos del conjunto de datos FIFA. Los datos se encuentran en la dirección: https://www.kaggle.com/karangadiya/fifa19?select=data.csv

El conjunto de datos data.csv incluye los atributos de los jugadores de la última edición de FIFA 2019 como Edad, Nacionalidad, Total, Potencial, Club, Valor, Salario, Pie preferido, Reputación internacional, Pie débil, Movimientos de habilidad, Ritmo de trabajo, Posición, Número de camiseta, Unido, Prestado desde, Contrato válido hasta , Altura, Peso, LS, ST, RS, LW, LF, CF, RF, RW, LAM, CAM, RAM, LM, LCM, CM, RCM, RM, LWB, LDM, CDM, RDM, RWB, LB, LCB , CB, RCB, RB, Centros, Remate, Rumbo, Precisión, Pases cortos, Voleas, Regate, Curva, FK Precisión, Pases largos, Control de balón, Aceleración, Sprint Velocidad, Agilidad, Reacciones, Equilibrio, Potencia de disparo, Salto, Resistencia, Fuerza, Tiros lejanos, Agresión , Intercepciones, Posicionamiento, Visión, Penalizaciones, Serenidad, Marcaje, Entrada de pie, Entrada deslizante, GKDiving, GKHandling, GKKicking, GKPositioning, GKReflexes y Cláusula de liberación.

Proceso

1. Cargar librerias

  • readr
  • dplyr
  • lubridate
  • fdth
  • ggplot2
  • fdth
library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(fdth)
## 
## Attaching package: 'fdth'
## The following objects are masked from 'package:stats':
## 
##     sd, var
library(ggplot2)
library(fdth)

2. Cargar los datos de FIFA

datos.FIFA <- read.csv("data.csv", encoding = "UTF-8")
  • Visualizar los primeros diez y últimos diez registros
  • Algunos atributos visibles con [identificando el atributo por posición]
# head(datos.FIFA, 10)
head(datos.FIFA[,c(3,4,6,8,9,10,12,13,14,15,27,28)], 10)
##                 Name Age Nationality Overall Potential                Club
## 1           L. Messi  31   Argentina      94        94        FC Barcelona
## 2  Cristiano Ronaldo  33    Portugal      94        94            Juventus
## 3          Neymar Jr  26      Brazil      92        93 Paris Saint-Germain
## 4             De Gea  27       Spain      91        93   Manchester United
## 5       K. De Bruyne  27     Belgium      91        92     Manchester City
## 6          E. Hazard  27     Belgium      91        91             Chelsea
## 7          L. Modric  32     Croatia      91        91         Real Madrid
## 8          L. Suárez  31     Uruguay      91        91        FC Barcelona
## 9       Sergio Ramos  32       Spain      91        91         Real Madrid
## 10          J. Oblak  25    Slovenia      90        93     Atlético Madrid
##      Value  Wage Special Preferred.Foot Height Weight
## 1  \200110.5M \200565K    2202           Left    5'7 159lbs
## 2     \20077M \200405K    2228          Right    6'2 183lbs
## 3  \200118.5M \200290K    2143          Right    5'9 150lbs
## 4     \20072M \200260K    1471          Right    6'4 168lbs
## 5    \200102M \200355K    2281          Right   5'11 154lbs
## 6     \20093M \200340K    2142          Right    5'8 163lbs
## 7     \20067M \200420K    2280          Right    5'8 146lbs
## 8     \20080M \200455K    2346          Right    6'0 190lbs
## 9     \20051M \200380K    2201          Right    6'0 181lbs
## 10    \20068M  \20094K    1331          Right    6'2 192lbs
tail(datos.FIFA[,c(3,4,6,8,9,10,12,13,14,15,27,28)], 10)
##                     Name Age         Nationality Overall Potential
## 18198         D. Holland  18 Republic of Ireland      47        61
## 18199         J. Livesey  18             England      47        70
## 18200       M. Baldisimo  18              Canada      47        69
## 18201           J. Young  18            Scotland      47        62
## 18202           D. Walsh  18 Republic of Ireland      47        68
## 18203       J. Lundstram  19             England      47        65
## 18204 N. Christoffersson  19              Sweden      47        63
## 18205          B. Worman  16             England      47        67
## 18206     D. Walker-Rice  17             England      47        66
## 18207          G. Nugent  16             England      46        66
##                         Club Value Wage Special Preferred.Foot Height Weight
## 18198              Cork City  \20060K  \2001K    1362          Right   5'10 141lbs
## 18199          Burton Albion  \20060K  \2001K     792          Right   5'11 154lbs
## 18200 Vancouver Whitecaps FC  \20070K  \2001K    1303          Right    5'6 150lbs
## 18201           Swindon Town  \20060K  \2001K    1203           Left    5'9 157lbs
## 18202           Waterford FC  \20060K  \2001K    1098           Left    6'1 168lbs
## 18203        Crewe Alexandra  \20060K  \2001K    1307          Right    5'9 134lbs
## 18204         Trelleborgs FF  \20060K  \2001K    1098          Right    6'3 170lbs
## 18205       Cambridge United  \20060K  \2001K    1189          Right    5'8 148lbs
## 18206        Tranmere Rovers  \20060K  \2001K    1228          Right   5'10 154lbs
## 18207        Tranmere Rovers  \20060K  \2001K    1321          Right   5'10 176lbs

3. Limpiar los datos

  • Un proceso de limpieza de datos no sólo es encontrar basura como NA o valores vacíos null y saber que hacer con ellos, en muchos casos se requiere transformar variables, eliminar datos y agregar variables para dejar listos para realiar análisis de datos posteriores.

  • Agregar Pais de club dependiendo del pais de donse sea el club.

  • Agregar Region de club: [“AFRICA”,“ASIA”,“OCEANIA”, “CONCACAF”, “EUROPA”,“SUDAMERICA”]

  • Agregar variable estatura en metros numérica de Heigth

  • Agregar variable peso en kgs numérica de la variable Weight

  • Generar un conjunto de datos mas manipulable para resolver el análisis del CASO.

  • Cargar las funciones requeridas

source("misfunciones.r")
  • Crear nuevo atributo llamado Estatura para cada jugador
  • Crear otro nuevo atributo llamado Pesokgs para cada jugador
datos.FIFA <- mutate(datos.FIFA, Estatura = festatura(Height), Pesokgs = flbskgs(Weight))
  • Generar un conjunto de datos MÁS manipulable sólo con los atributos:
  • Name, Age, Nationality, Overall, Potential, Club, Value, Preferred.Foot, Position, Height, Weight, Estatura, Peso
datos.FIFA.reduc <- select(datos.FIFA, Name, Age, Nationality, Overall, Potential, Club, Value, Preferred.Foot, Position, Height, Weight, Estatura, Pesokgs)

head(datos.FIFA.reduc)
##                Name Age Nationality Overall Potential                Club
## 1          L. Messi  31   Argentina      94        94        FC Barcelona
## 2 Cristiano Ronaldo  33    Portugal      94        94            Juventus
## 3         Neymar Jr  26      Brazil      92        93 Paris Saint-Germain
## 4            De Gea  27       Spain      91        93   Manchester United
## 5      K. De Bruyne  27     Belgium      91        92     Manchester City
## 6         E. Hazard  27     Belgium      91        91             Chelsea
##     Value Preferred.Foot Position Height Weight Estatura Pesokgs
## 1 \200110.5M           Left       RF    5'7 159lbs     1.70   72.12
## 2    \20077M          Right       ST    6'2 183lbs     1.88   83.01
## 3 \200118.5M          Right       LW    5'9 150lbs     1.75   68.04
## 4    \20072M          Right       GK    6'4 168lbs     1.93   76.20
## 5   \200102M          Right      RCM   5'11 154lbs     1.80   69.85
## 6    \20093M          Right       LF    5'8 163lbs     1.73   73.94

4. Explorar los datos

    1. Cuántos registros
    1. Cuántas variables
paste("Cantidad de registros", nrow(datos.FIFA.reduc))
## [1] "Cantidad de registros 18207"
paste("Cantidad de variables", ncol(datos.FIFA.reduc))
## [1] "Cantidad de variables 13"
    1. Tipos de variables
str(datos.FIFA.reduc)
## 'data.frame':    18207 obs. of  13 variables:
##  $ Name          : chr  "L. Messi" "Cristiano Ronaldo" "Neymar Jr" "De Gea" ...
##  $ Age           : int  31 33 26 27 27 27 32 31 32 25 ...
##  $ Nationality   : chr  "Argentina" "Portugal" "Brazil" "Spain" ...
##  $ Overall       : int  94 94 92 91 91 91 91 91 91 90 ...
##  $ Potential     : int  94 94 93 93 92 91 91 91 91 93 ...
##  $ Club          : chr  "FC Barcelona" "Juventus" "Paris Saint-Germain" "Manchester United" ...
##  $ Value         : chr  "\200110.5M" "\20077M" "\200118.5M" "\20072M" ...
##  $ Preferred.Foot: chr  "Left" "Right" "Right" "Right" ...
##  $ Position      : chr  "RF" "ST" "LW" "GK" ...
##  $ Height        : chr  "5'7" "6'2" "5'9" "6'4" ...
##  $ Weight        : chr  "159lbs" "183lbs" "150lbs" "168lbs" ...
##  $ Estatura      : num  1.7 1.88 1.75 1.93 1.8 1.73 1.73 1.83 1.83 1.88 ...
##  $ Pesokgs       : num  72.1 83 68 76.2 69.8 ...

5. Analizar datos

5.1. Frecuencia o CANTIDAD de jugadores por país. Elaborar un diagrama de barras por país y la cantidad de jugadores por país para determinar que países tiene MÁS Y MENOS JUGADORES. Interpretación que países tienen MAS Y MENOS jugadores registrados y su relación con el poderío futbolístico que tienen.

  • Con la función group_by() y summarise() para identificar cuántos jugadores por pais
nacion <- datos.FIFA.reduc %>%
  group_by (Nationality) %>%
  summarise(n = n()) 
## `summarise()` ungrouping output (override with `.groups` argument)
  • Se ordena de mayor a menor con la variable n del conjunto de datos generado para identificar cual pais tiene MÁS Y MENOS jugadores de este conJunto de datos
  • Se muestran los primeros diez y últimos diez países con MÁS Y MENOS jugadores
nacion <- arrange(nacion, desc(n))
head(nacion, 10)
## # A tibble: 10 x 2
##    Nationality     n
##    <chr>       <int>
##  1 England      1662
##  2 Germany      1198
##  3 Spain        1072
##  4 Argentina     937
##  5 France        914
##  6 Brazil        827
##  7 Italy         702
##  8 Colombia      618
##  9 Japan         478
## 10 Netherlands   453
tail(nacion, 10)
## # A tibble: 10 x 2
##    Nationality              n
##    <chr>                <int>
##  1 New Caledonia            1
##  2 Oman                     1
##  3 Palestine                1
##  4 Puerto Rico              1
##  5 Qatar                    1
##  6 Rwanda                   1
##  7 São Tomé & Príncipe      1
##  8 South Sudan              1
##  9 St Lucia                 1
## 10 United Arab Emirates     1
  • Elaborar un diagrama de barras por país y la cantidad de jugadores por país para determinar que países tienen MÁS Y MENOS JUGADORES.
  • Diagrama de barras de los países que tienen MÁS jugadores registrados
  • Usando la función ggplot
  • Top ten que significa los primeros y últimos 10 con head() y con tail()
ggplot(data = head(nacion, 10), aes(x = Nationality, y = n, color=Nationality))  +
  geom_bar(stat = "identity")

  • Diagrama de columnas de los paises que tienen MENOS jugadores registrados
  • Usando la función ggplot
ggplot(data = tail(nacion, 10), aes(x = Nationality, y = n, color=Nationality))  +
  geom_bar(stat = "identity")

  • En este conjunto de datos, se identifican países que sólo tienen un jugador registrado, para algunos análisis ese número de jugadores no es representativo.

Interpretación:¿Qué países tienen MÁS Y MENOS jugadores registrados y su relación con el poderío futbolístico que tienen?

5.2. EDAD. ¿Cuál es la edad (media y mediana) por nacionalidad? y ¿cuál es la edad (media y mediana) promedio por club. Diagrama de caja de la variable edad en función de la nacionalidad únicamente con el top ten de los que tengan un número de jugadores igual o por encima de la media del número de jugadores. (los 10 MÁS altos conforme a la media y los 10 MÁS bajos). Interpretación países clubs tienen los jugadores más jóvenes y menos jóvenes.

  • La media de age por nacionalidad
  • Utilizar group_y y summarize de la librería dplyr
  • Solo mostrar los primeros y últimos diez conforme la media
age.nacion <- datos.FIFA.reduc %>%
  group_by (Nationality) %>%
  summarise(n = n(), media = round(mean(Age),2), mediana = round(median(Age),2)) 
## `summarise()` ungrouping output (override with `.groups` argument)
  • Se ordena el conjunto de datos con la función arrange()
  • el ordenamiento es ascendentende por el atributo media
  • Solo se muestran los primeros y últimos diez registros
age.nacion <- arrange(age.nacion, media)
head(age.nacion, 10)
## # A tibble: 10 x 4
##    Nationality            n media mediana
##    <chr>              <int> <dbl>   <dbl>
##  1 Indonesia              1  17      17  
##  2 Botswana               1  20      20  
##  3 Rwanda                 1  21      21  
##  4 Tanzania               3  22      22  
##  5 Zambia                 9  22.2    21  
##  6 Afghanistan            4  22.5    22  
##  7 Chad                   2  22.5    22.5
##  8 Antigua & Barbuda      4  22.8    22  
##  9 Dominican Republic     2  23      23  
## 10 Jordan                 1  23      23
tail(age.nacion, 10)
## # A tibble: 10 x 4
##    Nationality             n media mediana
##    <chr>               <int> <dbl>   <dbl>
##  1 Fiji                    1  30      30  
##  2 Guam                    1  30      30  
##  3 New Caledonia           1  30      30  
##  4 Kuwait                  1  31      31  
##  5 Palestine               1  31      31  
##  6 São Tomé & Príncipe     1  31      31  
##  7 Trinidad & Tobago       4  31.8    28.5
##  8 Ethiopia                1  32      32  
##  9 Puerto Rico             1  34      34  
## 10 Oman                    1  36      36
  • Con respecto a lo que muestra la media de la edad de los jugadores por país, hay países con un sólo jugador, de tal forma que no es representativo.
  • Se suele tomar un criterio, por ejemplo, los que países que tengan el número de jugadores IGUAL O por ENCIMA del valor de la media o de la mediana con respecto a la varriable edad ‘Age’.
  • Se toma la mean = media como medida de comparación
la.media<- round(mean(age.nacion$n),0)
la.media
## [1] 111
  • Son 111 el promedio de jugadores por país en este conjunto de datos.
  • Ahora sobre ese valor determinar los PAÍSES que tiene un número de jugadores tal que estén por ENCIMA o IGUAL a él.
age.nacion.mean.n <- filter(age.nacion, n >= mean(age.nacion$n)) # Se puede utilizar la variable la.media

age.nacion.mean.n <- arrange(age.nacion.mean.n, media)
head(age.nacion.mean.n, 10)
## # A tibble: 10 x 4
##    Nationality     n media mediana
##    <chr>       <int> <dbl>   <dbl>
##  1 Nigeria       121  23.1      22
##  2 Ghana         114  23.7      23
##  3 Netherlands   453  24        24
##  4 England      1662  24.0      23
##  5 Norway        341  24.0      24
##  6 Denmark       336  24.2      24
##  7 Mexico        366  24.3      23
##  8 Belgium       260  24.3      23
##  9 Germany      1198  24.3      24
## 10 Australia     236  24.4      24
tail(age.nacion.mean.n, 10)
## # A tibble: 10 x 4
##    Nationality        n media mediana
##    <chr>          <int> <dbl>   <dbl>
##  1 Senegal          130  25.4    25.5
##  2 Serbia           126  25.6    26  
##  3 Portugal         322  25.8    25  
##  4 Italy            702  25.9    26  
##  5 China PR         392  26.1    26  
##  6 Japan            478  26.2    26  
##  7 Argentina        937  26.2    26  
##  8 Korea Republic   335  26.4    26  
##  9 Uruguay          149  26.6    26  
## 10 Brazil           827  27.6    27
  • Diagrama de caja de la variable mean(edad) en función de la nacionalidad
  • Más Jóvenes
ggplot(data = head(age.nacion.mean.n, 10), aes(Nationality, media)) +
  geom_boxplot()

  • Menos Jóvenes
ggplot(data = tail(age.nacion.mean.n, 10), aes(Nationality, media)) +
  geom_boxplot()

  • O con todos los datos del conjunto de datos reducido
ggplot(data = datos.FIFA.reduc, aes(x = Nationality, y = Age)) +
  geom_boxplot()

  • Unicamente con el top 10 conforme a la media de edad
paises.top <- head(age.nacion.mean.n$Nationality, 10)
paises.top
##  [1] "Nigeria"     "Ghana"       "Netherlands" "England"     "Norway"     
##  [6] "Denmark"     "Mexico"      "Belgium"     "Germany"     "Australia"
datos.FIFA.paises.top.mean.n <- filter(datos.FIFA, Nationality %in% paises.top)

head(datos.FIFA.paises.top.mean.n[,c(3,4,6)])
##            Name Age Nationality
## 1  K. De Bruyne  27     Belgium
## 2     E. Hazard  27     Belgium
## 3      T. Kroos  28     Germany
## 4       H. Kane  24     England
## 5 M. ter Stegen  26     Germany
## 6   T. Courtois  26     Belgium
ggplot(data = datos.FIFA.paises.top.mean.n, aes(x = Nationality, y = Age, color=Nationality)) +
  geom_boxplot()

  • Interpretación: ¿Cuáles países tienen los jugadores más jóvenes y menos jóvenes?

5.3. NACIONALIDAD-CLUB. Del campo nacionalidad (va cambiar a country) la frecuencia de equipos por país. Diagrama de barra del top 10. Interpretación qué país tiene más y menos equipos registrados. No existe una relación entre la Nacionalidad y el Club dado que es posible que tenga una nacionalidad y el club no es de ese país.

  • Dada la necesidad del análisis de los datos, se requiere un atributo nuevo que identifique el País en donde juega el equipo. * Es parte de un proceso de Limpieza de los datos
  • Utilizar un merge entre los datos datos.FIFA.reduc y clubs.nation, este último se cargó al mandar llamar las funciones.r
  • Aparecen algunos registros con valores vacíos porque no están todos los datos en la tabla clubs.nation
clubs.nation <- read.csv("clubs.nation.csv", encoding = "UTF-8")

datos.FIFA.reduc.merge <- merge(x = datos.FIFA.reduc, y=clubs.nation, 
      by.x = 'Club', by.y = 'club')
  • Ver ordenados por el atributo de country para identificar clubs por pais
head(arrange(datos.FIFA.reduc.merge, desc(country)), 10)
##              Club         Name Age   Nationality Overall Potential Value
## 1  Atlanta United J. Hernández  21     Venezuela      62        71 \200400K
## 2  Atlanta United     L. Kunga  19 United States      57        73 \200220K
## 3  Atlanta United     D. Nagbe  27 United States      73        73 \2004.1M
## 4  Atlanta United  M. Robinson  21 United States      61        72 \200375K
## 5  Atlanta United   B. Vazquez  19 United States      63        76 \200700K
## 6  Atlanta United   O. Shannon  22       England      57        66 \200160K
## 7  Atlanta United     B. Guzan  33 United States      73        73   \2002M
## 8  Atlanta United   J. Gressel  24       Germany      72        78 \2004.3M
## 9  Atlanta United   F. Escobar  23     Argentina      67        74 \200900K
## 10 Atlanta United    E. Remedi  23     Argentina      71        79   \2003M
##    Preferred.Foot Position Height Weight Estatura Pesokgs country confederaion
## 1            Left       LB    5'7 157lbs     1.70   71.21     USA     CONMEBOL
## 2            Left       LM    5'8 150lbs     1.73   68.04     USA     CONMEBOL
## 3           Right      RDM    5'9 165lbs     1.75   74.84     USA     CONMEBOL
## 4           Right       CB    6'2 185lbs     1.88   83.91     USA     CONMEBOL
## 5           Right       ST    6'3 174lbs     1.91   78.93     USA     CONMEBOL
## 6           Right      CAM    6'0 170lbs     1.83   77.11     USA     CONMEBOL
## 7            Left       GK    6'4 209lbs     1.93   94.80     USA     CONMEBOL
## 8           Right       RM    6'1 185lbs     1.85   83.91     USA     CONMEBOL
## 9           Right       RB    6'0 165lbs     1.83   74.84     USA     CONMEBOL
## 10          Right      LDM    5'7 159lbs     1.70   72.12     USA     CONMEBOL
##        continent
## 1  SOUTH AMERICA
## 2  SOUTH AMERICA
## 3  SOUTH AMERICA
## 4  SOUTH AMERICA
## 5  SOUTH AMERICA
## 6  SOUTH AMERICA
## 7  SOUTH AMERICA
## 8  SOUTH AMERICA
## 9  SOUTH AMERICA
## 10 SOUTH AMERICA
  • Generar un conjunto de datos únicamente de los club y country o pais
  • Quitar duplicados
datos.FIFA.only.club.coutry <- select(datos.FIFA.reduc.merge, Club, country)
datos.FIFA.only.club.coutry <- distinct(datos.FIFA.only.club.coutry)
head(datos.FIFA.only.club.coutry)
##                    Club country
## 1                              
## 2   SSV Jahn Regensburg        
## 3 1. FC Heidenheim 1846        
## 4  1. FC Kaiserslautern        
## 5       1. FC Magdeburg Germany
## 6    1. FC Union Berlin
  • Generar una tabla de frecuencias por pais seleccionando de la tabla resultante generada por data.frame(fdt_cat()) solo los campos Category y f
  • Cambiar los nombres de los atributos de la tabla
  • Quitar (depurar) el primer registro o de Country vacío
  • Mostrar la tabla
tabla <- data.frame(fdt_cat(datos.FIFA.only.club.coutry$country)) %>%
  select (Category,f)

names(tabla) <- c("Country", "Equipos")

#tabla

tabla <- tabla[-1,] # Quita el primer registros que son los valores vacios
#o se puede hacer con 

tabla <- filter(tabla, !Country == "")

head(tabla , 10)
##      Country Equipos
## 1    England      48
## 2        USA      24
## 3      Italy      22
## 4      Spain      22
## 5    Germany      17
## 6  M<e9>xico      15
## 7     France      13
## 8  Argentina      10
## 9      China      10
## 10   Ireland       8
tail(tabla , 10)
##        Country Equipos
## 22 South Corea       3
## 23      Canada       2
## 24       Chile       2
## 25    Scotland       2
## 26      Turkey       2
## 27     Ucrania       2
## 28   Australia       1
## 29     Austria       1
## 30       Corea       1
## 31     Denmark       1
  • Diagram de Barra de los países que tienen MÁS Y MENOS equipos
  • head(tabla,10). Los 10 primeros
  • tail(tabla,10). Los 10 últimos

#{r} #ggplot(data = head(tabla,10), aes(Country, Equipos, color=Country)) + geom_col() #

ggplot(data = tail(tabla,10), aes(Country, Equipos, color=Country)) +
    geom_col()

  • Interpretación: ¿Qué país tiene más y menos equipos registrados?

5.4. CLUB, ¿cuántos jugadores por club?. Diagrama de barra top 10

jug.por.club <- datos.FIFA.reduc.merge %>%
  group_by (Club) %>%
  summarise(n = n())
## `summarise()` ungrouping output (override with `.groups` argument)
jug.por.club
## # A tibble: 538 x 2
##    Club                        n
##    <chr>                   <int>
##  1 ""                        241
##  2 " SSV Jahn Regensburg"     29
##  3 "1. FC Heidenheim 1846"    28
##  4 "1. FC Kaiserslautern"     26
##  5 "1. FC Magdeburg"          26
##  6 "1. FC Union Berlin"       28
##  7 "1. FSV Mainz 05"          32
##  8 "Aalborg BK"               27
##  9 "Aarhus GF"                27
## 10 "Aberdeen"                 27
## # ... with 528 more rows
jug.por.club.top.ten <-head(arrange(jug.por.club, desc(n)),10)
jug.por.club.top.ten
## # A tibble: 10 x 2
##    Club                      n
##    <chr>                 <int>
##  1 ""                      241
##  2 "Arsenal"                33
##  3 "AS Monaco"              33
##  4 "Borussia Dortmund"      33
##  5 "Burnley"                33
##  6 "Cardiff City"           33
##  7 "Chelsea"                33
##  8 "Eintracht Frankfurt"    33
##  9 "Empoli"                 33
## 10 "Everton"                33
jug.por.club.bot.ten <- tail(arrange(jug.por.club, desc(n)),10)
jug.por.club.bot.ten
## # A tibble: 10 x 2
##    Club                     n
##    <chr>                <int>
##  1 Botafogo                20
##  2 Chapecoense             20
##  3 Cruzeiro                20
##  4 Fluminense              20
##  5 Internacional           20
##  6 Santos                  20
##  7 Sport Club do Recife    20
##  8 Limerick FC             19
##  9 Sligo Rovers            19
## 10 Derry City              18
  • Interpretación: ¿Qué clubes tienen tiene más y menos jugadores registrados?

5.5. VALUE. ¿Cual es el valor medio del precio de los jugadores que juegan en América del Sur en Norteamérica y en Europa. Tal vez sea necesario un nuevo atributo llamado continente o zona.

  • Para ello, se reutiliza el ya generado conjunto de datos datos.FIFA.reduc.merge
  • Se agrega un atributo Valor equivalente a Value pero de tipo numérico utilizando una función previamente cargada fcleanValue() de funciones.r
  • En el mutate() distinguir entre M Millones y K Miles Con filter procesar sólo los que tienen Valor mayor 0
datos.FIFA.reduc.merge.Value <- datos.FIFA.reduc.merge %>%
  mutate(datos.FIFA.reduc.merge, Valor = ifelse (substr(Value, nchar(Value), nchar(Value)) == 'M', fcleanValue(Value) * 1000000, fcleanValue(Value) * 1000)) %>%
  filter(Valor > 0)


head(datos.FIFA.reduc.merge.Value)
##                   Club            Name Age Nationality Overall Potential Value
## 1  SSV Jahn Regensburg   S. Nachreiner  29     Germany      68        68 \200700K
## 2  SSV Jahn Regensburg          A. Dej  26      Poland      67        70 \200925K
## 3  SSV Jahn Regensburg        A. Geipl  26     Germany      68        70 \200900K
## 4  SSV Jahn Regensburg       P. Pentke  33     Germany      70        70 \200900K
## 5  SSV Jahn Regensburg H. Al Ghaddioui  27     Morocco      64        64 \200475K
## 6  SSV Jahn Regensburg       B. Saller  25     Germany      68        71 \200925K
##   Preferred.Foot Position Height Weight Estatura Pesokgs country confederaion
## 1          Right       CB    6'2 170lbs     1.88   77.11                     
## 2          Right       CM    5'9 163lbs     1.75   73.94                     
## 3          Right      RDM   5'10 161lbs     1.78   73.03                     
## 4          Right       GK    6'3 187lbs     1.91   84.82                     
## 5          Right       ST    6'3 203lbs     1.91   92.08                     
## 6          Right       RB   5'10 154lbs     1.78   69.85                     
##   continent  Valor
## 1           700000
## 2           925000
## 3           900000
## 4           900000
## 5           475000
## 6           925000
tail(datos.FIFA.reduc.merge.Value)
##                      Club          Name Age Nationality Overall Potential Value
## 14888 Yokohama F. Marinos  T. Nishiyama  18       Japan      53        67 \200110K
## 14889 Yokohama F. Marinos   R. Yamanaka  25       Japan      65        70 \200600K
## 14890 Yokohama F. Marinos D. Cvetinovic  29      Serbia      70        70 \2001.4M
## 14891 Yokohama F. Marinos       Y. Otsu  28       Japan      68        68 \200900K
## 14892 Yokohama F. Marinos       T. Kubo  17       Japan      64        85 \200975K
## 14893 Yokohama F. Marinos    T. Ogihara  26       Japan      64        67 \200475K
##       Preferred.Foot Position Height Weight Estatura Pesokgs country
## 14888          Right       CB   5'11 152lbs     1.80   68.95        
## 14889           Left       LB    5'7 143lbs     1.70   64.86        
## 14890          Right      LCB    6'1 174lbs     1.85   78.93        
## 14891          Right      LCM   5'11 161lbs     1.80   73.03        
## 14892           Left      CAM    5'8 148lbs     1.73   67.13        
## 14893           Left       CM    6'0 157lbs     1.83   71.21        
##       confederaion continent   Valor
## 14888                         110000
## 14889                         600000
## 14890                        1400000
## 14891                         900000
## 14892                         975000
## 14893                         475000
  • Determinar la media del Valor de cada Continente o región solicitada:
  • América del Sur = ‘SOUTH AMERICA’
  • Norteamérica = ‘NORTH AMERICA’
  • Europa = ‘EUROPE’
  • Antes que todo quitar los registros que no tienen continente (limpieza)
datos.FIFA.reduc.merge.Value <- datos.FIFA.reduc.merge.Value %>%
  filter(!continent == "")
  • Generar las medias del precio económico de los jugadores por continente
mean.Valor.continente <- datos.FIFA.reduc.merge.Value %>% 
  group_by(continent) %>%
  summarise(media = mean(Valor))
## `summarise()` ungrouping output (override with `.groups` argument)
mean.Valor.continente
## # A tibble: 5 x 2
##   continent        media
##   <chr>            <dbl>
## 1 ASIA          1473879.
## 2 EUROPE        5408091.
## 3 NORTH AMERICA 1733987.
## 4 OCEANIA        747600 
## 5 SOUTH AMERICA 2296089.
  • Hacer un geom_box() de un ggplot para mejor comprensión con título
ggplot(datos.FIFA.reduc.merge.Value, aes(x=continent, y=Valor )) +
  geom_boxplot() + 
  geom_hline(yintercept = mean(datos.FIFA.reduc.merge.Value$Valor ), color = "red") + 
  labs(title = "Valor económico de los jugadores", subtitle =  paste("Valor económico medio = ", round(mean(datos.FIFA.reduc.merge.Value$Valor ),2)))

# media.SA <- mean(filter)
ggplot(datos.FIFA.reduc.merge.Value, aes(x=continent, y=Valor)) +
  geom_boxplot() + 
    geom_jitter(aes(color = continent)) +
  geom_hline(yintercept = mean(datos.FIFA.reduc.merge.Value$Valor), color = "red") +
  labs(title = "Valor económico de los jugadores", subtitle =  paste("Valor económico medio = ", round(mean(datos.FIFA.reduc.merge.Value$Valor),2)))

5.6. ZURDO O DERECHO ¿Qué jugadores hay más zurdos o derechos?

  • Agrupar por el tipo de pie utilizando el conjunto de datos original datos.FIFA
datos.FIFA.pie.preferido <- datos.FIFA %>%
  group_by(Preferred.Foot) %>%
  summarise(cuantos = n(), porc = paste(round(n() / nrow(datos.FIFA) * 100,2),"%"))
## `summarise()` ungrouping output (override with `.groups` argument)
datos.FIFA.pie.preferido
## # A tibble: 3 x 3
##   Preferred.Foot cuantos porc   
##   <chr>            <int> <chr>  
## 1 ""                  48 0.26 % 
## 2 "Left"            4211 23.13 %
## 3 "Right"          13948 76.61 %
  • Intrepretación: ¿Qué jugadores hay más, derechos o zurdos?

5.7. ALTURA ¿Cuál es la altura media y mediana de los jugadores

ggplot(data=datos.FIFA.reduc.merge.Value, aes(continent, Estatura, color=continent)) +
geom_boxplot() + # dibujamos el diagrama de cajas
stat_summary(fun.y=mean, geom="point",shape=18,
size=3, color="red") +
  geom_hline(yintercept = mean(datos.FIFA.reduc.merge.Value$Estatura, na.rm = TRUE), color="red") +
  labs(title = "Estatura media de jugadores por Continente", subtitle =  paste("Media total = ", round(mean(datos.FIFA.reduc.merge.Value$Estatura, na.rm = TRUE),2)))
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: Removed 11 rows containing non-finite values (stat_boxplot).
## Warning: Removed 11 rows containing non-finite values (stat_summary).

  • Interpretación: ¿En dónde hay jugadores más altos y mas bajos?, ¿cuál es la media mundial?, ¿en qué parte hay jugadores más altos y mas bajos?

5.8. PESO ¿Cuál es el peso medio y mediana de los jugadores?

ggplot(data=datos.FIFA.reduc.merge.Value, aes(continent, Pesokgs, color=continent)) +
geom_boxplot() + # dibujamos el diagrama de cajas
stat_summary(fun.y=mean, geom="point",shape=18,
size=3, color="red") +
  geom_hline(yintercept = mean(datos.FIFA.reduc.merge.Value$Pesokgs, na.rm = TRUE), color="red") +
  labs(title = "Peso medio de jugadores por Continente", subtitle =  paste("Media total = ", round(mean(datos.FIFA.reduc.merge.Value$Pesokgs, na.rm = TRUE),2)))
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: Removed 11 rows containing non-finite values (stat_boxplot).
## Warning: Removed 11 rows containing non-finite values (stat_summary).

  • Interpretación: ¿En dónde hay jugadores más robustos y menos robustos?, ¿cuál es la media mundial del peso de los jugadores?, ¿en qué parte hay jugadores más robustos?

6. Visualizar datos

Se representaron gráficas de barras, diagramas de cajas y tablas de frecuencias para resolver las tareas solicitadas

7. Comunicar datos

### en este archivos de datos nos damos cuenta que o nos dan a a conocer los precios de cada jugador y es izquierdo o derecho el peso promedio de cada jugador por cada contienente y n eso nos damos cuenta que todos deben de tener casi el mismo peso ya que seria lo adecuado para poder competir tambien nos dice la altura que tienen la cual es la media de 1.81, en estos datos nos revelan que hay mas derechos que surdos y si es bastante la diferencia. tambien los jugadores de europa son los que estan mucho mejor pagados ya que el tipo de juego alla es mejor.tambien nos puedde dar el nombre de algun jugador de cualquier edad o el club en donde se encuentra en estos momentos