10  Introducción al manejo de datos en R

10.1 Paqueterías en R

En R, podemos agregar funciones y herramientas adicionales mediante paqueterías (packages), también llamadas librerías.

Una paquetería es un conjunto de funciones, datos y documentación creado por alguien más, o incluso por ti.

Actualmente, hay más de 10,000 paqueterías disponibles en CRAN (Comprehensive R Archive Network).

10.1.1 ¿Para qué sirven las paqueterías en R?

Las paqueterías en R permiten ampliar las funciones básicas del programa. Por ejemplo:

  • Crear gráficos más avanzados (ggplot2).

  • Manipular y limpiar datos fácilmente (dplyr, tidyr).

  • Realizar análisis estadísticos complejos (lme4, caret).

  • Trabajar con fechas, textos o datos especiales (lubridate, stringr).

En otras palabras, las paqueterías te dan herramientas listas para usar que te ahorran tiempo y esfuerzo, sin tener que escribir todo desde cero.

10.1.2 ¿En dónde encontrar más paqueterías?

Si quieres explorar más paqueterías de R o buscar herramientas específicas, existen varios sitios confiables donde puedes consultar. Algunos de ellos son:

  • El repositorio oficial CRAN (Comprehensive R Archive Network) contiene todas las paqueterías revisados y se puede consultar en https://cran.r-project.org/web/packages/.

  • Para explorar y administrar paqueterías de manera más cómoda, también puedes usar el RStudio Package Manager en https://packagemanager.rstudio.com/.

  • Si trabajas con datos biológicos o genómicos, Bioconductor ofrece muchas paqueterías especializadas en este tipo de análisis https://www.bioconductor.org/packages/.

  • Además, algunos desarrolladores publican paqueterías en GitHub, desde donde se pueden instalar directamente usando devtools::install_github("usuario/paquete").

Ahora veamos cómo utilizarlas en R con loos siguientes códigos:

  1. Ver qué paqueterías tienes instaladas
Code
installed.packages()
 [1] "base64enc"    "bookdown"     "bslib"        "cachem"       "cli"         
 [6] "..."          "survival"     "tcltk"        "tools"        "translations"
[11] "utils"       
  1. Instalar una paquetería

Para instalar una nueva paquetería se utiliza la función install.packages("nombre_de_la_paqueteria")

Reemplaza "nombre_de_la_paqueteria" por el nombre real del la paquetería que quieras instalar.

Ejemplo:

Code
install.packages("ggplot2") # una libreria muy famosa para crear graficos
  1. Actualizar una paquetería

Si queremos actualizar una paquetería, lo podemos realizar con el siguiente código.

Code
update.packages("ggplot2")
Importante

Si no específicas, por defecto R, revisa todas las paqueterías instaladas. Dependiendo de la versión de R y de tu configuración, puede actualizarlas todas.

  1. Eliminar una paquetería
Code
remove.packages("ggplot2")
  1. Cargar una paquetería para utilizarla
Code
library(ggplot2)

También existe otra manera de cargar las paqueterías. Usando la pestaña de Packages en la ventana inferior derecha de Rstudio puedes ver todos las paqueterías instaladas.

  • Cada paquete tiene una casilla de verificación:
-    ✅ Casilla marcada → el paquete está **cargado y listo para usar**

-    ⬜ Casilla vacía → el paquete **no está cargado**
  • Puedes marcar la casilla para cargar un paquete, o desmarcarla para descargarlo de la sesión.
  • También puedes instalar o actualizar paqueterías usando los botones Install y Update en la parte superior de la pestaña.

10.2 Manejo de Data Frames en R

Una vez que sabemos cómo trabajar con paqueterías en R, podemos comenzar a manipular datos de forma más eficiente. Para ello, primero veremos cómo funcionan los data frames, qué podemos hacer con ellos y cómo importarlos desde archivos externos.

10.2.1 Introducción a los data frames en R

En R, un data frame es una de las estructuras más utilizadas para trabajar con datos. Puede pensarse como una tabla, donde cada columna representa una variable y cada fila corresponde a una observación.

En esta sección trabajaremos con una base de datos inspirada en el universo de Harry Potter (personajes, casas, hechizos, etc.), que nos servirá para practicar las operaciones básicas.

10.2.2 Importación y Exportación de Datos

Antes de manipular datos, es importante aprender a importarlos desde archivos externos y exportarlos cuando queramos guardar resultados.

Funciones principales

  • read.csv() – Importa archivos CSV.

  • read.table() – Importa archivos en formatos de tabla más generales.

  • write.csv() – Exporta un data frame a un archivo CSV.

Ejemplo básico:

Code
hp_data <- read.csv("hp_data/Characters.csv", sep = ";")

10.2.3 Cómo explorar un data frame en R

Una vez que tienes un data frame (ya sea creado a mano o importado), es importante aprender a explorarlo para entender su estructura y contenido.

A continuación se presentan las funciones más útiles para esto:

Ver las primeras filas

Muestra las primeras 6 filas del data frame.

Code
head(hp_data)
Id Name Gender Job House Wand Patronus Species Blood.status Hair.colour Eye.colour Loyalty Skills Birth Death
1 Harry James Potter Male Student Gryffindor 11" Holly phoenix feather Stag Human Half-blood Black Bright green Albus Dumbledore &#124; Dumbledore's Army &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Parseltongue&#124; Defence Against the Dark Arts &#124; Seeker 31 July 1980
2 Ronald Bilius Weasley Male Student Gryffindor 12" Ash unicorn tail hair Jack Russell terrier Human Pure-blood Red Blue Dumbledore's Army &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Wizard chess &#124; Quidditch goalkeeping 1 March 1980
3 Hermione Jean Granger Female Student Gryffindor 10¾" vine wood dragon heartstring Otter Human Muggle-born Brown Brown Dumbledore's Army &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Almost everything 19 September, 1979
4 Albus Percival Wulfric Brian Dumbledore Male Headmaster Gryffindor 15" Elder Thestral tail hair core Phoenix Human Half-blood Silver&#124; formerly auburn Blue Dumbledore's Army &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Considered by many to be one of the most powerful wizards of his time Late August 1881 30 June, 1997 
5 Rubeus Hagrid Male Keeper of Keys and Grounds &#124; Professor of Care of Magical Creatures Gryffindor 16" Oak unknown core None Half-Human/Half-Giant Part-Human (Half-giant) Black Black Albus Dumbledore &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Resistant to stunning spells&#124; above average strength &#124; crossbowmanship 6 December 1928
6 Neville Longbottom Male Student Gryffindor 13" Cherry unicorn hair Non-corporeal Human Pure-blood Blond Dumbledore's Army &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Herbology 30 July, 1980

Puedes cambiar el número de filas:

Code
head(hp_data, 3)
Id Name Gender Job House Wand Patronus Species Blood.status Hair.colour Eye.colour Loyalty Skills Birth Death
1 Harry James Potter Male Student Gryffindor 11" Holly phoenix feather Stag Human Half-blood Black Bright green Albus Dumbledore &#124; Dumbledore's Army &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Parseltongue&#124; Defence Against the Dark Arts &#124; Seeker 31 July 1980
2 Ronald Bilius Weasley Male Student Gryffindor 12" Ash unicorn tail hair Jack Russell terrier Human Pure-blood Red Blue Dumbledore's Army &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Wizard chess &#124; Quidditch goalkeeping 1 March 1980
3 Hermione Jean Granger Female Student Gryffindor 10¾" vine wood dragon heartstring Otter Human Muggle-born Brown Brown Dumbledore's Army &#124; Order of the Phoenix &#124; Hogwarts School of Witchcraft and Wizardry Almost everything 19 September, 1979

Ver las últimas filas

Code
tail(hp_data)
Id Name Gender Job House Wand Patronus Species Blood.status Hair.colour Eye.colour Loyalty Skills Birth Death
135 135 Septima Vector Female Professor of Arithmancyat Hogwarts Unknown Unknown Human  Black Hogwarts School of Witchcraft and Wizardry Before 1974
136 136 Wilhelmina Grubbly-Plank Female Substitute professor of Care of Magical Creatures at Hogwarts Unknown Non-corporeal Human  Grey Hogwarts School of Witchcraft and Wizardry
137 137 Fenrir Greyback Male Unknown None Werewolf Grey Lord Voldemort  &#124; Death Eaters Physical combat Pre 1945
138 138 Gellert Grindelwald Male Revolutionary leader(c. 1920s[6] – 1945) 15", Elder, Thestral tail hair core Human  Pure-blood or half-blood Blond Blue Gellert Grindelwald's Acolytes Duelling 1883 March, 1998
139 139 Dobby Male Malfoy family's house-elf (? - 1993), Hogwarts kitchens worker (December 1994 - 1998) | | | |House elf | |Green | | |A type of magic specific to house-elves, performed without a wand which includes the ability to apparate, disarm and make objects levitate |28 June |Late March, 1998
140 140 Kreacher Male Black family's house-elf (?-1996), Harry Potter's house-elf, Hogwarts kitchen worke | | | |House el | |White | | |Magic performed without a wand which includes the ability to apparate, disarm and make objects levitate | |

Conocer la estructura del data frame

Code
str(hp_data)
'data.frame':   140 obs. of  15 variables:
 $ Id          : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Name        : chr  "Harry James Potter" "Ronald Bilius Weasley" "Hermione Jean Granger" "Albus Percival Wulfric Brian Dumbledore" ...
 $ Gender      : chr  "Male" "Male" "Female" "Male" ...
 $ Job         : chr  "Student" "Student" "Student" "Headmaster" ...
 $ House       : chr  "Gryffindor" "Gryffindor" "Gryffindor" "Gryffindor" ...
 $ Wand        : chr  "11\"  Holly  phoenix feather" "12\" Ash unicorn tail hair " "10¾\"  vine wood dragon heartstring" "15\" Elder Thestral tail hair core" ...
 $ Patronus    : chr  "Stag" "Jack Russell terrier" "Otter" "Phoenix" ...
 $ Species     : chr  "Human" "Human" "Human" "Human" ...
 $ Blood.status: chr  "Half-blood" "Pure-blood" "Muggle-born" "Half-blood" ...
 $ Hair.colour : chr  "Black" "Red" "Brown" "Silver| formerly auburn" ...
 $ Eye.colour  : chr  "Bright green" "Blue" "Brown" "Blue" ...
 $ Loyalty     : chr  "Albus Dumbledore | Dumbledore's Army | Order of the Phoenix | Hogwarts School of Witchcraft and Wizardry" "Dumbledore's Army | Order of the Phoenix | Hogwarts School of Witchcraft and Wizardry" "Dumbledore's Army | Order of the Phoenix | Hogwarts School of Witchcraft and Wizardry" "Dumbledore's Army | Order of the Phoenix | Hogwarts School of Witchcraft and Wizardry" ...
 $ Skills      : chr  "Parseltongue| Defence Against the Dark Arts | Seeker" "Wizard chess | Quidditch goalkeeping" "Almost everything" "Considered by many to be one of the most powerful wizards of his time" ...
 $ Birth       : chr  "31 July 1980" "1 March 1980" "19 September, 1979" "Late August 1881" ...
 $ Death       : chr  "" "" "" "30 June, 1997 " ...

Esto muestra:

  • número de filas y columnas

  • tipo de cada variable (character, numeric, factor, etc.)

  • una muestra del contenido

Dimensiones del data frame

Número de filas:

Code
nrow(hp_data)
[1] 140

Número de columnas:

Code
ncol(hp_data)
[1] 15

Filas y columnas juntas:

Code
dim(hp_data)
[1] 140  15

Nombres de las columnas

Para poder ver los nombres de las columnas tenemos dos funciones diferentes names() o colnames()

Code
names(hp_data)
 [1] "Id"           "Name"         "Gender"       "Job"          "House"       
 [6] "Wand"         "Patronus"     "Species"      "Blood.status" "Hair.colour" 
[11] "Eye.colour"   "Loyalty"      "Skills"       "Birth"        "Death"       
Code
colnames(hp_data)
 [1] "Id"           "Name"         "Gender"       "Job"          "House"       
 [6] "Wand"         "Patronus"     "Species"      "Blood.status" "Hair.colour" 
[11] "Eye.colour"   "Loyalty"      "Skills"       "Birth"        "Death"       

Ver el data frame completo en una ventana tipo Excel

Si queremos explorar la base de datos de forma más completa, R ofrece una función que abre una ventana similar a una hoja de cálculo, donde podemos visualizar todas las filas y columnas. Esto se realiza con la función View().

Code
View(hp_data)

Resumen estadístico de las variables numéricas

Para obtener una primera impresión del comportamiento de las variables numéricas en un data frame, R ofrece la función summary().
Esta función genera un resumen estadístico básico, que incluye información como el valor mínimo y máximo, la mediana, el promedio y los cuartiles.

Estos datos permiten entender rápidamente cómo están distribuidos los valores, identificar variaciones importantes y detectar posibles valores atípicos dentro del conjunto de datos.

Code
summary(hp_data)
       Id             Name              Gender              Job           
 Min.   :  1.00   Length:140         Length:140         Length:140        
 1st Qu.: 35.75   Class :character   Class :character   Class :character  
 Median : 70.50   Mode  :character   Mode  :character   Mode  :character  
 Mean   : 70.50                                                           
 3rd Qu.:105.25                                                           
 Max.   :140.00                                                           
    House               Wand             Patronus           Species         
 Length:140         Length:140         Length:140         Length:140        
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
                                                                            
                                                                            
                                                                            
 Blood.status       Hair.colour         Eye.colour          Loyalty         
 Length:140         Length:140         Length:140         Length:140        
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
                                                                            
                                                                            
                                                                            
    Skills             Birth              Death          
 Length:140         Length:140         Length:140        
 Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character  
                                                         
                                                         
                                                         

Hasta aquí ya tenemos todo lo necesario para “conocer” tus datos: cómo cargarlos, visualizarlos, revisar sus columnas y obtener un resumen general. Este es el primer paso en cualquier análisis.

10.3 Referencias