Importar datos en R

Se puede realizar de formas diferentes :

  1. Utilizando el menú RStudio
  1. Utilizando el paquete Rcmdr y RcomdrMisc que activa una interfas de R que trabaja con menus y ventanas con un proceso parecido al anterio

Los anteriores caso implican que tengamos la base de datos descargada en una carpeta de nuestro PC

  1. Podemos importar la base de datos de un repositorio que maneje API que es un permiso a traves de un token. En este caso debemos solicitar el token e instalar el paquete RSocrata

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/.



¿Dónde encontrar y descargar la base de jugadores?

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)
  1. Podemos trabajar con Dataset disponible en los paquetes de R. Para ello solo utilizamos la función data
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")



Revisión y arreglo de los datos

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 !!!!



Guardar la base de datos

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)



Manejo de MAYUSCULAS y minusculas

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"



Algunos sitios de interés

Librerías en R

Creación de paquetes R con Rstudio

Tutoriales interactivos con R



Código R

Resumen FIFA 2026

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")
#-----------------------------------------------------