La reestructuración de datos es una habilidad esencial en el análisis de datos, ya que a menudo los datos no están en el formato adecuado para el análisis. En este módulo, aprenderemos cómo transformar y reorganizar datos utilizando R. Nos enfocaremos en las funciones y paquetes más utilizados para estas tareas, como tidyr
y reshape2
.
Contenido
- Introducción a la Reestructuración de Datos
- Funciones Básicas de
tidyr
- Funciones Básicas de
reshape2
- Ejemplos Prácticos
- Ejercicios y Soluciones
- Introducción a la Reestructuración de Datos
La reestructuración de datos implica cambiar la forma en que los datos están organizados. Esto puede incluir:
- Pivotar: Convertir datos de formato ancho a largo y viceversa.
- Unir: Combinar múltiples conjuntos de datos en uno solo.
- Separar y Unir Columnas: Dividir una columna en múltiples columnas o combinar varias columnas en una sola.
- Funciones Básicas de
tidyr
tidyr
El paquete tidyr
es parte del ecosistema tidyverse
y proporciona funciones para limpiar y reestructurar datos.
2.1 gather()
Convierte datos de formato ancho a largo.
library(tidyr) data <- data.frame( id = 1:3, year_2019 = c(10, 20, 30), year_2020 = c(15, 25, 35) ) long_data <- gather(data, key = "year", value = "value", year_2019:year_2020) print(long_data)
2.2 spread()
Convierte datos de formato largo a ancho.
2.3 separate()
Divide una columna en múltiples columnas.
data <- data.frame( id = 1:3, date = c("2020-01-01", "2020-02-01", "2020-03-01") ) separated_data <- separate(data, col = "date", into = c("year", "month", "day"), sep = "-") print(separated_data)
2.4 unite()
Combina múltiples columnas en una sola.
- Funciones Básicas de
reshape2
reshape2
El paquete reshape2
también es muy útil para la reestructuración de datos, especialmente para operaciones de pivotar.
3.1 melt()
Convierte datos de formato ancho a largo.
library(reshape2) data <- data.frame( id = 1:3, year_2019 = c(10, 20, 30), year_2020 = c(15, 25, 35) ) melted_data <- melt(data, id.vars = "id", variable.name = "year", value.name = "value") print(melted_data)
3.2 dcast()
Convierte datos de formato largo a ancho.
- Ejemplos Prácticos
Ejemplo 1: Reestructuración de Datos de Ventas
Supongamos que tenemos un conjunto de datos de ventas en formato ancho y queremos convertirlo a formato largo para análisis.
sales_data <- data.frame( product = c("A", "B", "C"), Q1 = c(100, 150, 200), Q2 = c(120, 160, 210), Q3 = c(130, 170, 220), Q4 = c(140, 180, 230) ) long_sales_data <- gather(sales_data, key = "quarter", value = "sales", Q1:Q4) print(long_sales_data)
Ejemplo 2: Separar y Unir Columnas de Fechas
Supongamos que tenemos un conjunto de datos con una columna de fechas y queremos separar esta columna en año, mes y día.
date_data <- data.frame( id = 1:3, date = c("2020-01-01", "2020-02-01", "2020-03-01") ) separated_date_data <- separate(date_data, col = "date", into = c("year", "month", "day"), sep = "-") print(separated_date_data) united_date_data <- unite(separated_date_data, col = "date", year, month, day, sep = "-") print(united_date_data)
- Ejercicios y Soluciones
Ejercicio 1: Reestructuración de Datos de Temperatura
Dado el siguiente conjunto de datos de temperatura, conviértelo de formato ancho a largo.
temperature_data <- data.frame( city = c("New York", "Los Angeles", "Chicago"), Jan = c(30, 50, 20), Feb = c(32, 55, 25), Mar = c(45, 60, 35) ) # Solución long_temperature_data <- gather(temperature_data, key = "month", value = "temperature", Jan:Mar) print(long_temperature_data)
Ejercicio 2: Separar y Unir Columnas de Nombres
Dado el siguiente conjunto de datos de nombres completos, sepáralos en nombres y apellidos, y luego únelos de nuevo.
name_data <- data.frame( id = 1:3, full_name = c("John Doe", "Jane Smith", "Alice Johnson") ) # Solución separated_name_data <- separate(name_data, col = "full_name", into = c("first_name", "last_name"), sep = " ") print(separated_name_data) united_name_data <- unite(separated_name_data, col = "full_name", first_name, last_name, sep = " ") print(united_name_data)
Conclusión
En esta sección, hemos aprendido cómo reestructurar datos utilizando las funciones de los paquetes tidyr
y reshape2
. Estas habilidades son fundamentales para preparar los datos para el análisis y la visualización. En el próximo módulo, exploraremos cómo trabajar con grandes conjuntos de datos, lo que nos permitirá aplicar estas técnicas a datos más complejos y voluminosos.
Programación en R: De Principiante a Avanzado
Módulo 1: Introducción a R
- Introducción a R y RStudio
- Sintaxis Básica de R
- Tipos y Estructuras de Datos
- Operaciones y Funciones Básicas
- Importación y Exportación de Datos
Módulo 2: Manipulación de Datos
- Vectores y Listas
- Matrices y Arreglos
- Data Frames
- Factores
- Manipulación de Datos con dplyr
- Manipulación de Cadenas
Módulo 3: Visualización de Datos
- Introducción a la Visualización de Datos
- Gráficos Base R
- Fundamentos de ggplot2
- ggplot2 Avanzado
- Visualizaciones Interactivas con plotly
Módulo 4: Análisis Estadístico
- Estadísticas Descriptivas
- Distribuciones de Probabilidad
- Pruebas de Hipótesis
- Correlación y Regresión
- ANOVA y Pruebas Chi-Cuadrado
Módulo 5: Manejo Avanzado de Datos
- Manejo de Fechas y Tiempos
- Reestructuración de Datos
- Trabajo con Grandes Conjuntos de Datos
- Web Scraping
- APIs y JSON
Módulo 6: Conceptos Avanzados de Programación
- Escritura de Funciones
- Depuración y Manejo de Errores
- Programación Orientada a Objetos en R
- Programación Funcional
- Computación Paralela
Módulo 7: Aprendizaje Automático con R
- Introducción al Aprendizaje Automático
- Preprocesamiento de Datos
- Aprendizaje Supervisado
- Aprendizaje No Supervisado
- Evaluación y Ajuste de Modelos
Módulo 8: Temas Especializados
- Análisis de Series Temporales
- Análisis de Datos Espaciales
- Minería de Textos y Procesamiento de Lenguaje Natural
- Bioinformática con R
- Análisis de Datos Financieros