
Se puede realizar de formas diferentes :
Los anteriores caso implican que tengamos la base de datos descargada en una carpeta de nuestro PC
Por ejemplo
Instalación de paquetes requeridos
# install.packages("RSocrata", dependencies = TRUE) # instalación de paquete RSocrata
library(RSocrata) # llamado de libreria
# token <- "zxMsD6eXc0zlEMryRGW87Hwrz" # token
# Colombia <- read.socrata("https://www.datos.gov.co/resource/gt2j-8ykr.json", app_token = token) # lectura
Este proceso tarde unos minutos pues la base es grande
También podemos leer directamente un archivo CSV. En este caso se
utiliza la base de jugadores y selecciones de FIFA 2026 ubicada en la
carpeta data/.
El archivo squads_and_players.csv forma parte del
proyecto FIFA World Cup 2026 Dataset, creado por MD
Mominul Islam. La base contiene 1.248 jugadores pertenecientes a las 48
selecciones del torneo. Se puede consultar o descargar desde:
Las listas de jugadores también se pueden consultar en la página oficial de convocados de FIFA. Esta página sirve para contrastar las convocatorias oficiales, mientras que el archivo CSV utilizado en este documento proviene del proyecto de datos mencionado anteriormente.
Después de descargar el archivo, se debe guardar con el nombre
squads_and_players.csv dentro de la carpeta
data/ del proyecto. También es posible leer la versión más
reciente directamente desde Hugging Face:
url_jugadores <- "https://huggingface.co/datasets/Mominullptr/fifa-world-cup-2026-dataset/resolve/main/squads_and_players.csv"
fifa2026 <- read_csv(url_jugadores, show_col_types = FALSE)
Para trabajar con la copia local descargada utilizamos:
fifa2026 <- read_csv("data/squads_and_players.csv", show_col_types = FALSE)
data(iris) # data set iris
data(cars) # data set cars
Ahora si tengo un archivo en mi PC, puedo utilizar la siguinte función para conocer la ruta donde esta el archivo y luego copiando la ruta obtenida con Ctrl+C,
file.choose()
En este caso la ruta es data/squads_and_players.csv.
fifa2026 <- read_csv("data/squads_and_players.csv")
Después de bajar la data es necesario revisar que no tenga problemas como:
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
## player_id team_id player_name position
## Min. : 1.0 Min. : 1.00 Length :1248 Length :1248
## 1st Qu.: 312.8 1st Qu.:12.75 N.unique :1241 N.unique : 4
## Median : 624.5 Median :24.50 N.blank : 0 N.blank : 0
## Mean : 624.5 Mean :24.50 Min.nchar: 2 Min.nchar: 2
## 3rd Qu.: 936.2 3rd Qu.:36.25 Max.nchar: 42 Max.nchar: 3
## Max. :1248.0 Max. :48.00
## club_team market_value_eur caps date_of_birth
## Length :1248 Min. : 25000 Min. : 0.00 Min. :1982-12-31
## N.unique : 450 1st Qu.: 2605922 1st Qu.: 11.00 1st Qu.:1995-10-22
## N.blank : 0 Median : 6537974 Median : 26.00 Median :1998-10-14
## Min.nchar: 3 Mean : 15487473 Mean : 34.99 Mean :1998-07-04
## Max.nchar: 31 3rd Qu.: 18000000 3rd Qu.: 50.00 3rd Qu.:2001-06-21
## Max. :200000000 Max. :229.00 Max. :2008-10-14
## height_cm goals
## Min. :160.0 Min. : 0.000
## 1st Qu.:178.0 1st Qu.: 0.000
## Median :183.0 Median : 1.000
## Mean :182.8 Mean : 4.523
## 3rd Qu.:188.0 3rd Qu.: 4.000
## Max. :205.0 Max. :143.000
Por otro lado la función View() permite visualizar la base en una ventana de manera separada
View(fifa2026)
View(iris)
Podemos visualizar los primeros 6 registros con el nombre de las variables
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
y los últimos seis registros
tail(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 145 6.7 3.3 5.7 2.5 virginica
## 146 6.7 3.0 5.2 2.3 virginica
## 147 6.3 2.5 5.0 1.9 virginica
## 148 6.5 3.0 5.2 2.0 virginica
## 149 6.2 3.4 5.4 2.3 virginica
## 150 5.9 3.0 5.1 1.8 virginica
Para realizar una revisión de una variable cualitativa utilizamos la función table(), la cual construye una tabla de frecuencias. En esta base revisamos la posición de los jugadores:
table(fifa2026[["position"]])
##
## DEF FWD GK MID
## 421 313 145 369
Las categorías corresponden a arquero (GK), defensa
(DEF), volante (MID) y delantero
(FWD). Para evitar diferencias causadas por espacios o
mayúsculas, estandarizamos las variables de texto.
fifa2026 <- fifa2026 %>%
mutate(
player_name = str_squish(player_name),
club_team = str_squish(club_team),
position = str_to_upper(str_trim(position))
)
table(fifa2026[["position"]], useNA = "ifany")
##
## DEF FWD GK MID
## 421 313 145 369
La fecha de nacimiento fue importada como texto. La convertimos al
formato Date y calculamos la edad que tendrá cada jugador
al 11 de junio de 2026, fecha de inicio del torneo:
class(fifa2026[["date_of_birth"]])
## [1] "Date"
fifa2026 <- fifa2026 %>%
mutate(
date_of_birth = as.Date(date_of_birth),
age_2026 = floor(
as.numeric(as.Date("2026-06-11") - date_of_birth) / 365.2425
)
)
class(fifa2026[["date_of_birth"]])
## [1] "Date"
Verificamos que los identificadores y las variables cuantitativas tengan formato numérico:
fifa2026 <- fifa2026 %>%
mutate(across(
c(player_id, team_id, market_value_eur, caps, height_cm, goals),
as.numeric
))
glimpse(fifa2026)
## Rows: 1,248
## Columns: 11
## $ player_id <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16…
## $ team_id <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ player_name <chr> "José Raúl Rangel", "Jorge Eduardo Sanchez", "César J…
## $ position <chr> "GK", "DEF", "DEF", "DEF", "DEF", "MID", "MID", "MID"…
## $ club_team <chr> "CD Guadalajara", "PAOK Saloniki", "FC Lokomotiv Mosc…
## $ market_value_eur <dbl> 8933646, 24628639, 10912552, 10875943, 18265363, 2152…
## $ caps <dbl> 15, 59, 69, 100, 47, 26, 62, 5, 127, 53, 47, 7, 153, …
## $ date_of_birth <date> 2000-02-25, 1997-12-10, 1997-02-24, 1997-10-24, 1998…
## $ height_cm <dbl> 190, 176, 191, 180, 182, 172, 183, 175, 188, 175, 180…
## $ goals <dbl> 0, 3, 4, 7, 3, 0, 4, 0, 46, 7, 6, 0, 0, 1, 2, 3, 12, …
## $ age_2026 <dbl> 26, 28, 29, 28, 27, 26, 31, 29, 35, 28, 25, 30, 40, 2…
summary(select(fifa2026, market_value_eur, caps, height_cm, goals, age_2026))
## market_value_eur caps height_cm goals
## Min. : 25000 Min. : 0.00 Min. :160.0 Min. : 0.000
## 1st Qu.: 2605922 1st Qu.: 11.00 1st Qu.:178.0 1st Qu.: 0.000
## Median : 6537974 Median : 26.00 Median :183.0 Median : 1.000
## Mean : 15487473 Mean : 34.99 Mean :182.8 Mean : 4.523
## 3rd Qu.: 18000000 3rd Qu.: 50.00 3rd Qu.:188.0 3rd Qu.: 4.000
## Max. :200000000 Max. :229.00 Max. :205.0 Max. :143.000
## age_2026
## Min. :17.00
## 1st Qu.:24.00
## Median :27.00
## Mean :27.45
## 3rd Qu.:30.00
## Max. :43.00
YA ESTA LISTA LA BASE !!!!
Este un trabajo que demanda mucho tiempo, pero que es necesario para tener una buena calidad en los datos. Cuando la base esta bien, podemos continuar con los demás procesos y también guardar la base transformada para una posterior procesamiento
En este caso la se guarda en formato csv
write_csv(fifa2026, "data/squads_and_players_clean.csv")
o en formato RDS
saveRDS(fifa2026, file = "data/squads_and_players_clean.RDS")
LISITO !!!!
TENEMOS LA BASE DE JUGADORES DE FIFA 2026 REVISADA Y ARREGLADA
En caso de querer seleccionar una parte de la data, por ejemplo los arqueros, utilizamos el siguiente código:
arqueros <- fifa2026[fifa2026[["position"]] == "GK", ]
jugadores_equipo_1 <- subset(fifa2026, team_id == 1)
library(stringr)
texto <- "probabilidad y estadística es importante en la formación de todo profesional"
str_to_upper(texto)
## [1] "PROBABILIDAD Y ESTADÍSTICA ES IMPORTANTE EN LA FORMACIÓN DE TODO PROFESIONAL"
#[1] "PROBABILIDAD Y ESTADISTICA ES UNA ASIGNATURA IMPORTANTE EN LA FORMACIÓN DE TODO PROFESIONAL"
str_to_lower(texto)
## [1] "probabilidad y estadística es importante en la formación de todo profesional"
#[1] "probabilidad y estadística es una asignatura importante en la formación de todo profesional"
str_to_title(texto)
## [1] "Probabilidad Y Estadística Es Importante En La Formación De Todo Profesional"
#[1] "Probabilidad Y Estadística Es Una Asignatura Importante En La Formación De Todo Profesional"
str_to_sentence(texto)
## [1] "Probabilidad y estadística es importante en la formación de todo profesional"
#[1] "Probabilidad y estadística es una asignatura importante en la formación de todo profesional"
install.packages("tidyverse")
library(tidyverse)
fifa2026 <- read_csv("data/squads_and_players.csv")
fifa2026 <- fifa2026 %>%
mutate(
player_name = str_squish(player_name),
club_team = str_squish(club_team),
position = str_to_upper(str_trim(position)),
date_of_birth = as.Date(date_of_birth),
age_2026 = floor(
as.numeric(as.Date("2026-06-11") - date_of_birth) / 365.2425
)
)
table(fifa2026[["position"]])
summary(select(fifa2026, market_value_eur, caps, height_cm, goals, age_2026))
arqueros <- filter(fifa2026, position == "GK")
jugadores_equipo_1 <- filter(fifa2026, team_id == 1)
write_csv(fifa2026, "data/squads_and_players_clean.csv")
saveRDS(fifa2026, file = "data/squads_and_players_clean.RDS")
#-----------------------------------------------------