En esta libreta vamos a trabajar con un conjunto de datos que contiene los datos de la FIFA de la copa del mundo. Disponéis de los archivos ya descargados en la sección de recursos. Utilizaremos estos tres ficheros:
Mediante esta libreta vamos a explorar los datos almacenados en estos tres ficheros y a responder preguntas haciendo operaciones y transformaciones con pandas. Además de completar las celdas de código para responder a los ejercicios, cuando así se indique se deberá incluir texto en markdown explicando la información o las conclusiones extraídas.
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
# Cargamos el conjunto de datos
df_partidos <- read.csv("~/Maestrías/Maestria Data Science & Big data/4. Introducción a los lenguajes de programación/1. Fundamentos de python/Clase # 3. Fundamentos de R/WorldCupMatches.csv")
df_jugadores <- read.csv("~/Maestrías/Maestria Data Science & Big data/4. Introducción a los lenguajes de programación/1. Fundamentos de python/Clase # 3. Fundamentos de R/WorldCupPlayers.csv")
df_copas <- read.csv("~/Maestrías/Maestria Data Science & Big data/4. Introducción a los lenguajes de programación/1. Fundamentos de python/Clase # 3. Fundamentos de R/WorldCups.csv")
Usar las funcioneshead y summary para
explorar el dataframe df_partidos. Documentar en
markdown brevemente la información almacenada en cada dataframe
(columnas y tipo de datos).
head(df_partidos)
## Year Datetime Stage Stadium City Home.Team.Name
## 1 1930 13 Jul 1930 - 15:00 Group 1 Pocitos Montevideo France
## 2 1930 13 Jul 1930 - 15:00 Group 4 Parque Central Montevideo USA
## 3 1930 14 Jul 1930 - 12:45 Group 2 Parque Central Montevideo Yugoslavia
## 4 1930 14 Jul 1930 - 14:50 Group 3 Pocitos Montevideo Romania
## 5 1930 15 Jul 1930 - 16:00 Group 1 Parque Central Montevideo Argentina
## 6 1930 16 Jul 1930 - 14:45 Group 1 Parque Central Montevideo Chile
## Home.Team.Goals Away.Team.Goals Away.Team.Name Win.conditions Attendance
## 1 4 1 Mexico 4444
## 2 3 0 Belgium 18346
## 3 2 1 Brazil 24059
## 4 3 1 Peru 2549
## 5 1 0 France 23409
## 6 3 0 Mexico 9249
## Half.time.Home.Goals Half.time.Away.Goals Referee
## 1 3 0 LOMBARDI Domingo (URU)
## 2 2 0 MACIAS Jose (ARG)
## 3 2 0 TEJADA Anibal (URU)
## 4 1 0 WARNKEN Alberto (CHI)
## 5 0 0 REGO Gilberto (BRA)
## 6 1 0 CRISTOPHE Henry (BEL)
## Assistant.1 Assistant.2 RoundID MatchID
## 1 CRISTOPHE Henry (BEL) REGO Gilberto (BRA) 201 1096
## 2 MATEUCCI Francisco (URU) WARNKEN Alberto (CHI) 201 1090
## 3 VALLARINO Ricardo (URU) BALWAY Thomas (FRA) 201 1093
## 4 LANGENUS Jean (BEL) MATEUCCI Francisco (URU) 201 1098
## 5 SAUCEDO Ulises (BOL) RADULESCU Constantin (ROU) 201 1085
## 6 APHESTEGUY Martin (URU) LANGENUS Jean (BEL) 201 1095
## Home.Team.Initials Away.Team.Initials
## 1 FRA MEX
## 2 USA BEL
## 3 YUG BRA
## 4 ROU PER
## 5 ARG FRA
## 6 CHI MEX
summary(df_partidos)
## Year Datetime Stage Stadium
## Min. :1930 Length:4572 Length:4572 Length:4572
## 1st Qu.:1970 Class :character Class :character Class :character
## Median :1990 Mode :character Mode :character Mode :character
## Mean :1985
## 3rd Qu.:2002
## Max. :2014
## NA's :3720
## City Home.Team.Name Home.Team.Goals Away.Team.Goals
## Length:4572 Length:4572 Min. : 0.000 Min. :0.000
## Class :character Class :character 1st Qu.: 1.000 1st Qu.:0.000
## Mode :character Mode :character Median : 2.000 Median :1.000
## Mean : 1.811 Mean :1.022
## 3rd Qu.: 3.000 3rd Qu.:2.000
## Max. :10.000 Max. :7.000
## NA's :3720 NA's :3720
## Away.Team.Name Win.conditions Attendance Half.time.Home.Goals
## Length:4572 Length:4572 Min. : 2000 Min. :0.000
## Class :character Class :character 1st Qu.: 30000 1st Qu.:0.000
## Mode :character Mode :character Median : 41580 Median :0.000
## Mean : 45165 Mean :0.709
## 3rd Qu.: 61375 3rd Qu.:1.000
## Max. :173850 Max. :6.000
## NA's :3722 NA's :3720
## Half.time.Away.Goals Referee Assistant.1 Assistant.2
## Min. :0.000 Length:4572 Length:4572 Length:4572
## 1st Qu.:0.000 Class :character Class :character Class :character
## Median :0.000 Mode :character Mode :character Mode :character
## Mean :0.428
## 3rd Qu.:1.000
## Max. :5.000
## NA's :3720
## RoundID MatchID Home.Team.Initials Away.Team.Initials
## Min. : 201 Min. : 25 Length:4572 Length:4572
## 1st Qu.: 262 1st Qu.: 1189 Class :character Class :character
## Median : 337 Median : 2191 Mode :character Mode :character
## Mean :10661773 Mean : 61346868
## 3rd Qu.: 249722 3rd Qu.: 43950059
## Max. :97410600 Max. :300186515
## NA's :3720 NA's :3720
str(df_partidos)
## 'data.frame': 4572 obs. of 20 variables:
## $ Year : int 1930 1930 1930 1930 1930 1930 1930 1930 1930 1930 ...
## $ Datetime : chr "13 Jul 1930 - 15:00 " "13 Jul 1930 - 15:00 " "14 Jul 1930 - 12:45 " "14 Jul 1930 - 14:50 " ...
## $ Stage : chr "Group 1" "Group 4" "Group 2" "Group 3" ...
## $ Stadium : chr "Pocitos" "Parque Central" "Parque Central" "Pocitos" ...
## $ City : chr "Montevideo " "Montevideo " "Montevideo " "Montevideo " ...
## $ Home.Team.Name : chr "France" "USA" "Yugoslavia" "Romania" ...
## $ Home.Team.Goals : int 4 3 2 3 1 3 4 3 1 1 ...
## $ Away.Team.Goals : int 1 0 1 1 0 0 0 0 0 0 ...
## $ Away.Team.Name : chr "Mexico" "Belgium" "Brazil" "Peru" ...
## $ Win.conditions : chr " " " " " " " " ...
## $ Attendance : int 4444 18346 24059 2549 23409 9249 18306 18306 57735 2000 ...
## $ Half.time.Home.Goals: int 3 2 2 1 0 1 0 2 0 0 ...
## $ Half.time.Away.Goals: int 0 0 0 0 0 0 0 0 0 0 ...
## $ Referee : chr "LOMBARDI Domingo (URU)" "MACIAS Jose (ARG)" "TEJADA Anibal (URU)" "WARNKEN Alberto (CHI)" ...
## $ Assistant.1 : chr "CRISTOPHE Henry (BEL)" "MATEUCCI Francisco (URU)" "VALLARINO Ricardo (URU)" "LANGENUS Jean (BEL)" ...
## $ Assistant.2 : chr "REGO Gilberto (BRA)" "WARNKEN Alberto (CHI)" "BALWAY Thomas (FRA)" "MATEUCCI Francisco (URU)" ...
## $ RoundID : int 201 201 201 201 201 201 201 201 201 201 ...
## $ MatchID : int 1096 1090 1093 1098 1085 1095 1092 1097 1099 1094 ...
## $ Home.Team.Initials : chr "FRA" "USA" "YUG" "ROU" ...
## $ Away.Team.Initials : chr "MEX" "BEL" "BRA" "PER" ...
colnames(df_partidos)
## [1] "Year" "Datetime" "Stage"
## [4] "Stadium" "City" "Home.Team.Name"
## [7] "Home.Team.Goals" "Away.Team.Goals" "Away.Team.Name"
## [10] "Win.conditions" "Attendance" "Half.time.Home.Goals"
## [13] "Half.time.Away.Goals" "Referee" "Assistant.1"
## [16] "Assistant.2" "RoundID" "MatchID"
## [19] "Home.Team.Initials" "Away.Team.Initials"
El DataFrame presenta información sobre los partidos disputados desde el año 1930 hasta el 2014, es una base de datos compuesta por 4572 filas con 852 datos no nulos (4572-3720 = 852); y 20 columnas con 8 variables de tipo int y 12 de tipo chr.
Entre todas las variables a destacar están: Home Team Goals, Away Team Goals, Home Team Name, Away Team Name, Stadium, Attendance, Stage; que nos permite extraer estadísticas sobre:
head(df_jugadores)
## RoundID MatchID Team.Initials Coach.Name Line.up Shirt.Number
## 1 201 1096 FRA CAUDRON Raoul (FRA) S 0
## 2 201 1096 MEX LUQUE Juan (MEX) S 0
## 3 201 1096 FRA CAUDRON Raoul (FRA) S 0
## 4 201 1096 MEX LUQUE Juan (MEX) S 0
## 5 201 1096 FRA CAUDRON Raoul (FRA) S 0
## 6 201 1096 MEX LUQUE Juan (MEX) S 0
## Player.Name Position Event
## 1 Alex THEPOT GK
## 2 Oscar BONFIGLIO GK
## 3 Marcel LANGILLER G40'
## 4 Juan CARRENO G70'
## 5 Ernest LIBERATI
## 6 Rafael GARZA C
summary(df_jugadores)
## RoundID MatchID Team.Initials Coach.Name
## Min. : 201 Min. : 25 Length:37784 Length:37784
## 1st Qu.: 263 1st Qu.: 1199 Class :character Class :character
## Median : 337 Median : 2216 Mode :character Mode :character
## Mean :11056474 Mean : 63622330
## 3rd Qu.: 255931 3rd Qu.: 97410003
## Max. :97410600 Max. :300186515
## Line.up Shirt.Number Player.Name Position
## Length:37784 Min. : 0.00 Length:37784 Length:37784
## Class :character 1st Qu.: 5.00 Class :character Class :character
## Mode :character Median :11.00 Mode :character Mode :character
## Mean :10.73
## 3rd Qu.:17.00
## Max. :23.00
## Event
## Length:37784
## Class :character
## Mode :character
##
##
##
str(df_jugadores)
## 'data.frame': 37784 obs. of 9 variables:
## $ RoundID : int 201 201 201 201 201 201 201 201 201 201 ...
## $ MatchID : int 1096 1096 1096 1096 1096 1096 1096 1096 1096 1096 ...
## $ Team.Initials: chr "FRA" "MEX" "FRA" "MEX" ...
## $ Coach.Name : chr "CAUDRON Raoul (FRA)" "LUQUE Juan (MEX)" "CAUDRON Raoul (FRA)" "LUQUE Juan (MEX)" ...
## $ Line.up : chr "S" "S" "S" "S" ...
## $ Shirt.Number : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Player.Name : chr "Alex THEPOT" "Oscar BONFIGLIO" "Marcel LANGILLER" "Juan CARRENO" ...
## $ Position : chr "GK" "GK" "" "" ...
## $ Event : chr "" "" "G40'" "G70'" ...
colnames(df_jugadores)
## [1] "RoundID" "MatchID" "Team.Initials" "Coach.Name"
## [5] "Line.up" "Shirt.Number" "Player.Name" "Position"
## [9] "Event"
El DataFrame presenta información sobre los jugadores que han jugado en cada partido disputado desde el año 1930 hasta el 2014, es una base de datos compuesta por 37784 filas; y 9 columnas con 3 variables de tipo int y 6 de tipo chr.
Entre todas las variables a destacar están: RoundID, MatchID, Team Initials, Player Name, que son variables de utilidad para responder a diferentes preguntas una vez se logre concatenar las dos primeras columnas con la primera base de datos:
Las preguntas a responder pueden ser:
head(df_copas)
## Year Country Winner Runners.Up Third Fourth GoalsScored
## 1 1930 Uruguay Uruguay Argentina USA Yugoslavia 70
## 2 1934 Italy Italy Czechoslovakia Germany Austria 70
## 3 1938 France Italy Hungary Brazil Sweden 84
## 4 1950 Brazil Uruguay Brazil Sweden Spain 88
## 5 1954 Switzerland Germany FR Hungary Austria Uruguay 140
## 6 1958 Sweden Brazil Sweden France Germany FR 126
## QualifiedTeams MatchesPlayed Attendance
## 1 13 18 590.549
## 2 16 17 363.000
## 3 15 18 375.700
## 4 13 22 1.045.246
## 5 16 26 768.607
## 6 16 35 819.810
summary(df_copas)
## Year Country Winner Runners.Up
## Min. :1930 Length:20 Length:20 Length:20
## 1st Qu.:1957 Class :character Class :character Class :character
## Median :1976 Mode :character Mode :character Mode :character
## Mean :1975
## 3rd Qu.:1995
## Max. :2014
## Third Fourth GoalsScored QualifiedTeams
## Length:20 Length:20 Min. : 70.0 Min. :13.00
## Class :character Class :character 1st Qu.: 89.0 1st Qu.:16.00
## Mode :character Mode :character Median :120.5 Median :16.00
## Mean :119.0 Mean :21.25
## 3rd Qu.:145.2 3rd Qu.:26.00
## Max. :171.0 Max. :32.00
## MatchesPlayed Attendance
## Min. :17.0 Length:20
## 1st Qu.:30.5 Class :character
## Median :38.0 Mode :character
## Mean :41.8
## 3rd Qu.:55.0
## Max. :64.0
str(df_copas)
## 'data.frame': 20 obs. of 10 variables:
## $ Year : int 1930 1934 1938 1950 1954 1958 1962 1966 1970 1974 ...
## $ Country : chr "Uruguay" "Italy" "France" "Brazil" ...
## $ Winner : chr "Uruguay" "Italy" "Italy" "Uruguay" ...
## $ Runners.Up : chr "Argentina" "Czechoslovakia" "Hungary" "Brazil" ...
## $ Third : chr "USA" "Germany" "Brazil" "Sweden" ...
## $ Fourth : chr "Yugoslavia" "Austria" "Sweden" "Spain" ...
## $ GoalsScored : int 70 70 84 88 140 126 89 89 95 97 ...
## $ QualifiedTeams: int 13 16 15 13 16 16 16 16 16 16 ...
## $ MatchesPlayed : int 18 17 18 22 26 35 32 32 32 38 ...
## $ Attendance : chr "590.549" "363.000" "375.700" "1.045.246" ...
colnames(df_copas)
## [1] "Year" "Country" "Winner" "Runners.Up"
## [5] "Third" "Fourth" "GoalsScored" "QualifiedTeams"
## [9] "MatchesPlayed" "Attendance"
El DataFrame presenta información sobre las clasificaciones de 1er hasta 4to lugar obtenidas a lo largo de cada partido disputado desde el año 1930 hasta el 2014, es una base de datos compuesta por 20 filas con datos no nulos; y 10 columnas con 4 variables de tipo int y 6 de tipo chr.
Entre todas las variables a destacar están: Year, Country, el puesto obtenido, GoalsScored y Attendance, para dar respuesta a preguntas como:
Una de las cosas que llama la atención es la alta presencia de
valores perdidos en el DataFrame df_partidos. Cuando
trabajamos con datos obtenidos del mundo real siempre nos toparemos con
problemas relacionados con la medición, captura o almacenamiento de
dicha información.
Localiza las filas con valores perdidos. Analizar y
documentar en markdown a qué se deben estos valores
perdidos. Finalmente usar la función drop_na
sobre el DataFrame para eliminar los valores perdidos del DataFrame, y
almacena el resultado en df_partidos de nuevo.
Con la siguiente línea de código se van a sumar todos los valores nulos por columna, y al mismo tiempo identificar si hay valores nulos
# Contar el número de valores nulos por columna
num_nulos <- colSums(is.na(df_partidos))
num_nulos
## Year Datetime Stage
## 3720 0 0
## Stadium City Home.Team.Name
## 0 0 0
## Home.Team.Goals Away.Team.Goals Away.Team.Name
## 3720 3720 0
## Win.conditions Attendance Half.time.Home.Goals
## 0 3722 3720
## Half.time.Away.Goals Referee Assistant.1
## 3720 0 0
## Assistant.2 RoundID MatchID
## 0 3720 3720
## Home.Team.Initials Away.Team.Initials
## 0 0
# Contar el número de valores nulos por columna
num_nulos <- colSums(is.na(df_jugadores))
num_nulos
## RoundID MatchID Team.Initials Coach.Name Line.up
## 0 0 0 0 0
## Shirt.Number Player.Name Position Event
## 0 0 0 0
# Contar el número de valores nulos por columna
num_nulos <- colSums(is.na(df_copas))
num_nulos
## Year Country Winner Runners.Up Third
## 0 0 0 0 0
## Fourth GoalsScored QualifiedTeams MatchesPlayed Attendance
## 0 0 0 0 0
Solo se encontraron valores nulos en la base de datos df_partidos, procederemos a eliminarlos.
df_partidos_sin_nulos <- drop_na(df_partidos)
df_partidos = df_partidos_sin_nulos
num_nulos <- colSums(is.na(df_partidos))
num_nulos
## Year Datetime Stage
## 0 0 0
## Stadium City Home.Team.Name
## 0 0 0
## Home.Team.Goals Away.Team.Goals Away.Team.Name
## 0 0 0
## Win.conditions Attendance Half.time.Home.Goals
## 0 0 0
## Half.time.Away.Goals Referee Assistant.1
## 0 0 0
## Assistant.2 RoundID MatchID
## 0 0 0
## Home.Team.Initials Away.Team.Initials
## 0 0
Volvemos a verificar que no hayan datos nulos, y que tampoco se hayan eliminado datos importantes por analizar.
summary(df_partidos)
## Year Datetime Stage Stadium
## Min. :1930 Length:850 Length:850 Length:850
## 1st Qu.:1970 Class :character Class :character Class :character
## Median :1990 Mode :character Mode :character Mode :character
## Mean :1985
## 3rd Qu.:2002
## Max. :2014
## City Home.Team.Name Home.Team.Goals Away.Team.Goals
## Length:850 Length:850 Min. : 0.000 Min. :0.000
## Class :character Class :character 1st Qu.: 1.000 1st Qu.:0.000
## Mode :character Mode :character Median : 2.000 Median :1.000
## Mean : 1.811 Mean :1.022
## 3rd Qu.: 3.000 3rd Qu.:2.000
## Max. :10.000 Max. :7.000
## Away.Team.Name Win.conditions Attendance Half.time.Home.Goals
## Length:850 Length:850 Min. : 2000 Min. :0.0000
## Class :character Class :character 1st Qu.: 30000 1st Qu.:0.0000
## Mode :character Mode :character Median : 41580 Median :0.0000
## Mean : 45165 Mean :0.7106
## 3rd Qu.: 61375 3rd Qu.:1.0000
## Max. :173850 Max. :6.0000
## Half.time.Away.Goals Referee Assistant.1 Assistant.2
## Min. :0.0000 Length:850 Length:850 Length:850
## 1st Qu.:0.0000 Class :character Class :character Class :character
## Median :0.0000 Mode :character Mode :character Mode :character
## Mean :0.4294
## 3rd Qu.:1.0000
## Max. :5.0000
## RoundID MatchID Home.Team.Initials Away.Team.Initials
## Min. : 201 Min. : 25 Length:850 Length:850
## 1st Qu.: 262 1st Qu.: 1188 Class :character Class :character
## Median : 337 Median : 2184 Mode :character Mode :character
## Mean :10686257 Mean : 60784892
## 3rd Qu.: 249722 3rd Qu.: 43950058
## Max. :97410600 Max. :300186515
# Identificar columnas con valores duplicados
filas_duplicadas <- df_partidos[duplicated(df_partidos) | duplicated(df_partidos, fromLast = TRUE), ]
head(filas_duplicadas)
## Year Datetime Stage Stadium
## 821 2014 28 Jun 2014 - 13:00 Round of 16 Estadio Mineirao
## 822 2014 28 Jun 2014 - 17:00 Round of 16 Estadio do Maracana
## 823 2014 30 Jun 2014 - 13:00 Round of 16 Estadio Nacional
## 824 2014 04 Jul 2014 - 17:00 Quarter-finals Estadio Castelao
## 825 2014 04 Jul 2014 - 13:00 Quarter-finals Estadio do Maracana
## 826 2014 08 Jul 2014 - 17:00 Semi-finals Estadio Mineirao
## City Home.Team.Name Home.Team.Goals Away.Team.Goals
## 821 Belo Horizonte Brazil 1 1
## 822 Rio De Janeiro Colombia 2 0
## 823 Brasilia France 2 0
## 824 Fortaleza Brazil 2 1
## 825 Rio De Janeiro France 0 1
## 826 Belo Horizonte Brazil 1 7
## Away.Team.Name Win.conditions Attendance
## 821 Chile Brazil win on penalties (3 - 2) 57714
## 822 Uruguay 73804
## 823 Nigeria 67882
## 824 Colombia 60342
## 825 Germany 74240
## 826 Germany 58141
## Half.time.Home.Goals Half.time.Away.Goals Referee
## 821 0 0 WEBB Howard (ENG)
## 822 1 0 Bj�rn KUIPERS (NED)
## 823 0 0 GEIGER Mark (USA)
## 824 1 0 Carlos VELASCO CARBALLO (ESP)
## 825 0 1 PITANA Nestor (ARG)
## 826 0 5 RODRIGUEZ Marco (MEX)
## Assistant.1 Assistant.2 RoundID MatchID
## 821 MULLARKEY Michael (ENG) Darren CANN (ENG) 255951 300186487
## 822 Sander VAN ROEKEL (NED) Erwin ZEINSTRA (NED) 255951 300186491
## 823 HURD Sean (USA) FLETCHER Joe (CAN) 255951 300186462
## 824 ALONSO FERNANDEZ Roberto (ESP) YUSTE Juan (ESP) 255953 300186461
## 825 MAIDANA Hernan (ARG) BELATTI Juan Pablo (ARG) 255953 300186485
## 826 TORRENTERA Marvin (MEX) QUINTERO Marcos (MEX) 255955 300186474
## Home.Team.Initials Away.Team.Initials
## 821 BRA CHI
## 822 COL URU
## 823 FRA NGA
## 824 BRA COL
## 825 FRA GER
## 826 BRA GER
# Eliminar filas duplicadas y comprobar
df_partidos_sin_duplicados <- unique(df_partidos)
df_partidos = df_partidos_sin_duplicados
filas_duplicadas <- df_partidos[duplicated(df_partidos) | duplicated(df_partidos, fromLast = TRUE), ]
head(filas_duplicadas)
## [1] Year Datetime Stage
## [4] Stadium City Home.Team.Name
## [7] Home.Team.Goals Away.Team.Goals Away.Team.Name
## [10] Win.conditions Attendance Half.time.Home.Goals
## [13] Half.time.Away.Goals Referee Assistant.1
## [16] Assistant.2 RoundID MatchID
## [19] Home.Team.Initials Away.Team.Initials
## <0 rows> (o 0- extensión row.names)
Se encontraron y se eliminaron las filas con datos duplicados en cada una de las variables, debido a que estas pueden afectar las estadísticas calculadas para alguna de las preguntas planteadas.
Algunas de las causas de los valores perdidos en una base de datos son:
Los errores humanos: Estos errores pueden ocurrir debido a la entrada de datos incorrecta, como dejar campos vacíos o ingresar información inválida. También pueden ocurrir por omisiones accidentales, como olvidar completar ciertos campos o no tener la información disponible. Finalmente, la falta de capacitación adecuada para los usuarios en los procedimientos de entrada de datos puede llevar a errores que resulten en valores perdidos.
Los problemas técnicos: Los fallos en el hardware o software pueden corromper los datos o incluso hacer que se pierdan por completo. Las interrupciones en la red también pueden impedir que los datos se guarden correctamente, mientras que los errores durante la importación de datos pueden causar la pérdida de información.
La naturaleza de los datos: Algunos datos simplemente no se recopilan, como cuando una encuesta no incluye una pregunta específica. También pueden existir datos confidenciales que no se pueden recopilar, como información médica personal. Finalmente, eventos inesperados como desastres naturales o ciberataques pueden causar la pérdida de datos.
El diseño de la base de datos: Un diseño inadecuado puede dificultar la captura correcta de los datos o incluso hacer que se pierdan. La falta de mecanismos de validación de datos permite la entrada de información incorrecta o perdida. La integración de datos de diferentes fuentes también puede generar valores perdidos, al igual que las actualizaciones de software o bases de datos.
El dataframe df_copas contiene datos de todos los
mundiales disputados. ¿Cuál es el año del mundial más antiguo disputado?
¿Y el año del mundial más reciente?
Pista: recuerda que podemos usar funciones de
agregación (min mean, etc.) directamente sobre
columnas. Por ejemplo, el siguiente código nos muestra el mayor número
de goles marcado en un mundial.
x = min(df_copas$Year)
y = max(df_copas$Year)
cat("El año del mundial más antiguo es: ", x, "\n")
## El año del mundial más antiguo es: 1930
cat("El año del mundial más reciente es: ", y)
## El año del mundial más reciente es: 2014
Opcional: Una vez localizados los años de interés
(más antiguo y más reciente) visualizar las filas completas
correspondientes a cada año usando la función filter.
fila_mas_antigua <- df_copas %>%
filter(Year == x)
fila_mas_reciente <- df_copas %>%
filter(Year == y)
print(rbind(fila_mas_antigua, fila_mas_reciente))
## Year Country Winner Runners.Up Third Fourth GoalsScored
## 1 1930 Uruguay Uruguay Argentina USA Yugoslavia 70
## 2 2014 Brazil Germany Argentina Netherlands Brazil 171
## QualifiedTeams MatchesPlayed Attendance
## 1 13 18 590.549
## 2 32 64 3.386.810