R: Manipulación de datos
Aprende a manipular datos en R con técnicas de filtrado, ordenación, transformación y agregación para análisis estadístico avanzado.
Aprende R GRATIS y certifícateManipulación de datos en R
La manipulación de datos constituye una de las actividades más frecuentes en el análisis estadístico y la ciencia de datos. En R, esta tarea implica transformar, filtrar, ordenar y resumir conjuntos de datos para extraer información significativa y prepararlos para análisis posteriores.
R proporciona múltiples enfoques para trabajar con datos, desde las funciones base del lenguaje hasta paquetes especializados que simplifican estas operaciones. La capacidad de manipular datos de forma eficiente determina en gran medida la productividad en proyectos de análisis.
Estructuras de datos fundamentales
Los data frames representan la estructura principal para almacenar datos tabulares en R. Funcionan como tablas donde cada columna puede contener diferentes tipos de datos (numéricos, caracteres, lógicos) mientras mantienen la misma longitud.
# Crear un data frame básico
estudiantes <- data.frame(
nombre = c("Ana", "Carlos", "María", "Pedro"),
edad = c(22, 25, 23, 24),
nota = c(8.5, 7.2, 9.1, 6.8),
aprobado = c(TRUE, TRUE, TRUE, TRUE)
)
# Visualizar la estructura
str(estudiantes)
Las listas permiten almacenar elementos de diferentes tipos y longitudes, ofreciendo mayor flexibilidad que los vectores. Son especialmente útiles cuando necesitamos agrupar información heterogénea.
# Lista con diferentes tipos de elementos
datos_curso <- list(
nombre_curso = "Estadística Básica",
estudiantes = c("Ana", "Carlos", "María"),
calificaciones = c(8.5, 7.2, 9.1),
activo = TRUE
)
Acceso y selección de datos
El acceso a elementos específicos dentro de las estructuras de datos se realiza mediante diferentes operadores según el tipo de estructura y el resultado deseado.
Acceso por índices numéricos:
# Seleccionar filas y columnas específicas
estudiantes[1, ] # Primera fila completa
estudiantes[, 2] # Segunda columna completa
estudiantes[1:2, c(1,3)] # Primeras dos filas, columnas 1 y 3
Acceso por nombres:
# Seleccionar columnas por nombre
estudiantes$nombre # Operador $
estudiantes[["edad"]] # Doble corchete
estudiantes["nota"] # Corchete simple (mantiene estructura)
Filtrado de datos
El filtrado permite seleccionar subconjuntos de datos que cumplan condiciones específicas. Esta operación resulta fundamental para enfocar el análisis en grupos particulares de observaciones.
# Filtrar estudiantes con nota superior a 8
estudiantes_destacados <- estudiantes[estudiantes$nota > 8, ]
# Filtrar por múltiples condiciones
jovenes_aprobados <- estudiantes[estudiantes$edad < 24 & estudiantes$aprobado == TRUE, ]
# Usar la función subset para mayor claridad
subset(estudiantes, nota > 7.5 & edad >= 23)
Las condiciones lógicas se construyen utilizando operadores de comparación (>
, <
, >=
, <=
, ==
, !=
) y operadores lógicos (&
para "y", |
para "o", !
para "no").
Ordenación de datos
La ordenación organiza los datos según los valores de una o más variables, facilitando la identificación de patrones y la presentación de resultados.
# Ordenar por una sola variable
estudiantes_por_edad <- estudiantes[order(estudiantes$edad), ]
# Ordenar por múltiples variables
estudiantes_ordenados <- estudiantes[order(estudiantes$edad, -estudiantes$nota), ]
# Ordenar de forma descendente
estudiantes_por_nota <- estudiantes[order(-estudiantes$nota), ]
La función order()
devuelve los índices que ordenarían el vector, mientras que el signo menos (-
) invierte el orden para obtener una ordenación descendente.
Transformación de variables
La transformación de variables implica crear nuevas columnas o modificar las existentes mediante operaciones matemáticas, funciones o combinaciones de otras variables.
# Crear nuevas variables
estudiantes$nota_porcentaje <- estudiantes$nota * 10
estudiantes$categoria_edad <- ifelse(estudiantes$edad >= 24, "Mayor", "Menor")
# Transformar variables existentes
estudiantes$nombre <- toupper(estudiantes$nombre) # Convertir a mayúsculas
estudiantes$nota_redondeada <- round(estudiantes$nota, 1)
La función ifelse()
permite crear variables categóricas basadas en condiciones, siguiendo la estructura ifelse(condición, valor_si_verdadero, valor_si_falso)
.
Agregación y resumen
Las operaciones de agregación calculan estadísticas resumidas para grupos de datos o para el conjunto completo, proporcionando una visión general de las características principales.
# Estadísticas básicas
mean(estudiantes$nota) # Media
median(estudiantes$edad) # Mediana
max(estudiantes$nota) # Valor máximo
min(estudiantes$edad) # Valor mínimo
# Resumen completo
summary(estudiantes)
# Contar frecuencias
table(estudiantes$aprobado)
Para agrupar datos y calcular estadísticas por grupos, utilizamos la función aggregate()
:
# Agrupar por categoría de edad y calcular media de notas
aggregate(nota ~ categoria_edad, data = estudiantes, FUN = mean)
# Múltiples estadísticas por grupo
aggregate(cbind(nota, edad) ~ aprobado, data = estudiantes, FUN = mean)
Estas operaciones fundamentales de manipulación de datos forman la base para análisis más complejos y constituyen herramientas esenciales en el flujo de trabajo típico con R.
Lecciones de este módulo de R
Lecciones de programación del módulo Manipulación de datos del curso de R.