Manipulación y Transformación de Datos

dplyr: select, filter, arrange, mutate, summarize

El paquete dplyr en R es una herramienta poderosa para la manipulación y transformación de datos. Proporciona una gramática intuitiva para realizar operaciones comunes como seleccionar columnas (select), filtrar filas (filter), ordenar datos (arrange), crear nuevas variables (mutate), y resumir datos (summarize). Estas funciones son fáciles de usar y optimizan la eficiencia del código.

Código:

				
					# Cargar el paquete dplyr
library(dplyr)

# Crear un data frame de ejemplo
datos <- data.frame(
  nombre = c("Ana", "Luis", "Marta", "Juan", "Sofia"),
  edad = c(28, 34, 45, 23, 37),
  salario = c(3000, 4000, 5000, 3200, 4100),
  departamento = c("Ventas", "IT", "HR", "IT", "Ventas")
)

# Función select: seleccionar columnas específicas
datos_seleccionados <- select(datos, nombre, salario)

# Función filter: filtrar filas basadas en condiciones
datos_filtrados <- filter(datos, edad > 30)

# Función arrange: ordenar datos por una o más columnas
datos_ordenados <- arrange(datos, salario)

# Función mutate: crear nuevas variables o modificar existentes
datos_mutados <- mutate(datos, salario_anual = salario * 12)

# Función summarize: crear resúmenes estadísticos
resumen_datos <- datos %>%
  group_by(departamento) %>%
  summarize(
    promedio_salario = mean(salario),
    max_edad = max(edad)
  )

				
			

Explicación del código:

  1. select: La función select se utiliza para seleccionar columnas específicas de un data frame. Por ejemplo, select(datos, nombre, salario) crea un nuevo data frame datos_seleccionados con solo las columnas nombre y salario.

  2. filter: La función filter se utiliza para filtrar filas basadas en condiciones lógicas. Por ejemplo, filter(datos, edad > 30) crea un nuevo data frame datos_filtrados que solo incluye las filas donde la columna edad es mayor que 30.

  3. arrange: La función arrange se utiliza para ordenar los datos por una o más columnas. Por ejemplo, arrange(datos, salario) crea un nuevo data frame datos_ordenados ordenado por la columna salario en orden ascendente.

  4. mutate: La función mutate se utiliza para crear nuevas variables o modificar las existentes. Por ejemplo, mutate(datos, salario_anual = salario * 12) agrega una nueva columna salario_anual al data frame datos, calculando el salario anual multiplicando el salario mensual por 12.

  5. summarize: La función summarize se utiliza para crear resúmenes estadísticos de los datos. Junto con group_by, puedes agrupar datos y calcular estadísticas resumidas. Por ejemplo, el código datos %>% group_by(departamento) %>% summarize(promedio_salario = mean(salario), max_edad = max(edad)) agrupa los datos por departamento y calcula el salario promedio y la edad máxima para cada grupo, creando un nuevo data frame resumen_datos.

Estas funciones de dplyr te permiten manipular y transformar datos de manera eficiente y clara, mejorando la legibilidad y la productividad en el análisis de datos en R.

tidyr: gather, spread, separate, unite

El paquete tidyr en R se utiliza para transformar y limpiar datos, facilitando el cambio entre formatos de datos amplios y largos. Las funciones principales de tidyr incluyen gather para convertir datos de formato ancho a largo, spread para convertir datos de formato largo a ancho, separate para dividir una columna en múltiples columnas, y unite para combinar múltiples columnas en una sola.

Código:

				
					# Cargar el paquete tidyr
library(tidyr)

# Crear un data frame de ejemplo
datos <- data.frame(
  nombre = c("Ana", "Luis", "Marta"),
  ventas_2020 = c(150, 200, 250),
  ventas_2021 = c(180, 220, 270)
)

# Función gather: convertir de formato ancho a largo
datos_largos <- gather(datos, año, ventas, ventas_2020:ventas_2021)

# Crear un data frame de ejemplo en formato largo
datos_largos <- data.frame(
  nombre = c("Ana", "Ana", "Luis", "Luis", "Marta", "Marta"),
  año = c("2020", "2021", "2020", "2021", "2020", "2021"),
  ventas = c(150, 180, 200, 220, 250, 270)
)

# Función spread: convertir de formato largo a ancho
datos_anchos <- spread(datos_largos, año, ventas)

# Crear un data frame de ejemplo para separar
datos_separar <- data.frame(
  nombre_completo = c("Ana_Santos", "Luis_Perez", "Marta_Lopez")
)

# Función separate: dividir una columna en múltiples columnas
datos_separados <- separate(datos_separar, nombre_completo, into = c("nombre", "apellido"), sep = "_")

# Crear un data frame de ejemplo para unir
datos_unir <- data.frame(
  nombre = c("Ana", "Luis", "Marta"),
  apellido = c("Santos", "Perez", "Lopez")
)

# Función unite: combinar múltiples columnas en una sola
datos_unidos <- unite(datos_unir, nombre_completo, nombre, apellido, sep = "_")

				
			

Explicación del código:

  1. gather: La función gather se utiliza para convertir datos de formato ancho a largo. Por ejemplo, gather(datos, año, ventas, ventas_2020:ventas_2021) transforma el data frame datos de formato ancho (donde las columnas representan años) a formato largo (donde hay una columna para los años y otra para las ventas). Esto es útil cuando se desean analizar datos a lo largo del tiempo o realizar operaciones sobre un conjunto unificado de datos.

  2. spread: La función spread se utiliza para convertir datos de formato largo a ancho. Por ejemplo, spread(datos_largos, año, ventas) toma el data frame datos_largos (donde los años y las ventas están en columnas separadas) y lo transforma de nuevo a formato ancho, creando una columna para cada año.

  3. separate: La función separate se utiliza para dividir una columna en múltiples columnas. Por ejemplo, separate(datos_separar, nombre_completo, into = c("nombre", "apellido"), sep = "_") toma la columna nombre_completo y la divide en dos columnas: nombre y apellido, usando el carácter _ como separador.

  4. unite: La función unite se utiliza para combinar múltiples columnas en una sola. Por ejemplo, unite(datos_unir, nombre_completo, nombre, apellido, sep = "_") toma las columnas nombre y apellido y las une en una sola columna nombre_completo, separando los valores con _.