Published on

Transformaciones de Datos con Base R y Tidyverse en R

Authors
  • avatar
    Name
    Jordan Rodriguez
    Twitter

Transformaciones de Datos con Base R y Tidyverse

En este tutorial, exploraremos técnicas esenciales para transformar datos en R. Utilizaremos tanto funciones de base R como herramientas del paquete tidyverse para cubrir tareas comunes como filtrado, agrupación, resumen, creación de nuevas variables y más.


1. Filtrado y Selección de Datos

1.1 Filtrado con Base R

# Crear un conjunto de datos de ejemplo
df <- data.frame(
  edad = c(25, 34, 45, 50, 29),
  sexo = c("M", "F", "M", "F", "M"),
  ingresos = c(2500, 4000, 3200, 5000, 2800)
)

# Filtrar filas donde la edad sea mayor a 30
filtrado <- subset(df, edad > 30)
print(filtrado)
##   edad sexo ingresos
## 2   34    F     4000
## 3   45    M     3200
## 4   50    F     5000

1.2 Filtrado con Tidyverse

library(dplyr)

# Filtrar filas donde la edad sea mayor a 30
filtrado_tidy <- df %>%
  filter(edad > 30)
print(filtrado_tidy)
##   edad sexo ingresos
## 1   34    F     4000
## 2   45    M     3200
## 3   50    F     5000

2. Agrupación y Resumen de Datos

2.1 Agrupación y Resumen con Base R

# Calcular el ingreso promedio por sexo
resumen <- aggregate(ingresos ~ sexo, data = df, FUN = mean)
print(resumen)
##   sexo ingresos
## 1    F     4500
## 2    M     2833.333

2.2 Agrupación y Resumen con Tidyverse

# Calcular el ingreso promedio por sexo
resumen_tidy <- df %>%
  group_by(sexo) %>%
  summarise(promedio_ingresos = mean(ingresos))
print(resumen_tidy)
##   sexo promedio_ingresos
## 1    F            4500
## 2    M            2833.333

3. Creación de Nuevas Variables

3.1 Creación de Variables con Base R

# Crear una nueva variable que calcule el ingreso anual
df$ingreso_anual <- df$ingresos * 12
print(df)
##   edad sexo ingresos ingreso_anual
## 1   25    M     2500          30000
## 2   34    F     4000          48000
## 3   45    M     3200          38400
## 4   50    F     5000          60000
## 5   29    M     2800          33600

3.2 Creación de Variables con Tidyverse

# Crear una nueva variable que calcule el ingreso anual
df_tidy <- df %>%
  mutate(ingreso_anual = ingresos * 12)
print(df_tidy)
##   edad sexo ingresos ingreso_anual
## 1   25    M     2500          30000
## 2   34    F     4000          48000
## 3   45    M     3200          38400
## 4   50    F     5000          60000
## 5   29    M     2800          33600

4. Ordenamiento de Datos

4.1 Ordenamiento con Base R

# Ordenar datos por ingresos en orden descendente
ordenado <- df[order(-df$ingresos), ]
print(ordenado)
##   edad sexo ingresos ingreso_anual
## 4   50    F     5000          60000
## 2   34    F     4000          48000
## 3   45    M     3200          38400
## 5   29    M     2800          33600
## 1   25    M     2500          30000

4.2 Ordenamiento con Tidyverse

# Ordenar datos por ingresos en orden descendente
ordenado_tidy <- df_tidy %>%
  arrange(desc(ingresos))
print(ordenado_tidy)
##   edad sexo ingresos ingreso_anual
## 1   50    F     5000          60000
## 2   34    F     4000          48000
## 3   45    M     3200          38400
## 4   29    M     2800          33600
## 5   25    M     2500          30000

5. Reshape de Datos

5.1 Pivotar Datos con Tidyverse

library(tidyr)

# Crear un ejemplo de datos en formato ancho
datos_ancho <- data.frame(
  producto = c("A", "B"),
  enero = c(100, 200),
  febrero = c(150, 250)
)

# Transformar de ancho a largo
datos_largo <- datos_ancho %>%
  pivot_longer(cols = enero:febrero, names_to = "mes", values_to = "ventas")
print(datos_largo)
##   producto      mes ventas
## 1        A    enero    100
## 2        A  febrero    150
## 3        B    enero    200
## 4        B  febrero    250

Conclusión

En este tutorial, aprendiste a realizar transformaciones esenciales de datos en R utilizando tanto funciones de base R como herramientas del tidyverse. Estas habilidades son clave para limpiar, analizar y preparar datos para análisis más avanzados.

¡Experimenta con tus propios conjuntos de datos y domina estas técnicas para optimizar tu flujo de trabajo en R!