Dplyr¶
Introducción¶
La librería dplyr en R es una herramienta poderosa para realizar operaciones de manipulación y transformación de datos de manera eficiente. Fue desarrollada por Hadley Wickham y se basa en una gramática coherente y fácil de usar para trabajar con datos en R. Dplyr se enfoca en proporcionar un conjunto de funciones optimizadas para realizar operaciones comunes de limpieza, filtrado, transformación y resumen de datos.
Las principales características y beneficios de dplyr son:
Sintaxis intuitiva: Dplyr utiliza una sintaxis clara y legible que facilita la comprensión y escritura de código. Esto permite a los usuarios expresar fácilmente las operaciones que desean realizar sobre los datos.
Rendimiento eficiente: Dplyr ha sido diseñado para ofrecer un rendimiento óptimo, especialmente al trabajar con grandes conjuntos de datos. Utiliza técnicas de optimización y aprovecha las funciones de bajo nivel en R para mejorar la velocidad de procesamiento.
Operaciones verbales: Las funciones de dplyr están diseñadas con nombres verbales intuitivos que reflejan las acciones que realizan. Esto hace que el código sea más legible y facilita la comprensión de las operaciones realizadas.
Manipulación de datos: Dplyr proporciona funciones para seleccionar columnas específicas (select), filtrar filas basadas en condiciones lógicas (filter), agregar nuevas columnas o transformar columnas existentes (mutate) y ordenar los datos según una o varias columnas (arrange).
Operaciones de agregación: Dplyr permite realizar operaciones de agregación por grupos utilizando las funciones group_by() y summarize(). Esto permite calcular estadísticas resumidas, como la media, suma, conteo, etc., para diferentes grupos de datos.
Combinación de datos: Dplyr ofrece funciones para combinar diferentes conjuntos de datos basándose en columnas comunes utilizando las funciones join(). Esto permite realizar uniones internas, externas, izquierdas y derechas entre los conjuntos de datos.
Ejemplo¶
Mostraremos unejemplo completo de cómo utilizar dplyr
con el conjunto de datos "mtcars" incorporado en R:
# Cargar el paquete dplyr
library(dplyr)
# Ver una vista previa del conjunto de datos mtcars
head(mtcars)
mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
---|---|---|---|---|---|---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | |
Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
Valiant | 18.1 | 6 | 225 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |
Seleccionar columnas específicas:
# Seleccionar las columnas "mpg", "cyl" y "gear"
mtcars_select <- select(mtcars, mpg, cyl, gear)
head(mtcars_select)
mpg | cyl | gear | |
---|---|---|---|
<dbl> | <dbl> | <dbl> | |
Mazda RX4 | 21.0 | 6 | 4 |
Mazda RX4 Wag | 21.0 | 6 | 4 |
Datsun 710 | 22.8 | 4 | 4 |
Hornet 4 Drive | 21.4 | 6 | 3 |
Hornet Sportabout | 18.7 | 8 | 3 |
Valiant | 18.1 | 6 | 3 |
Filtrar filas basadas en una condición:
# Filtrar las filas donde el número de cilindros (cyl) es igual a 6
mtcars_filter <- filter(mtcars, cyl == 6)
head(mtcars_filter)
mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
---|---|---|---|---|---|---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | |
Mazda RX4 | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
Mazda RX4 Wag | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
Hornet 4 Drive | 21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
Valiant | 18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |
Merc 280 | 19.2 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.30 | 1 | 0 | 4 | 4 |
Merc 280C | 17.8 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.90 | 1 | 0 | 4 | 4 |
Agregar una nueva columna calculada:
# Agregar una nueva columna "km_l" que calcule el consumo de combustible en km por litro
mtcars_mutate <- mutate(mtcars, km_l = 1.60934 * mpg / 3.78541)
head(mtcars_mutate)
mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | km_l | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | |
Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 | 8.928000 |
Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 | 8.928000 |
Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 | 9.693257 |
Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 | 9.098057 |
Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 | 7.950171 |
Valiant | 18.1 | 6 | 225 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 | 7.695086 |
Ordenar el conjunto de datos por una columna específica:
# Ordenar las filas por el número de cilindros (cyl) en orden descendente
mtcars_arrange <- arrange(mtcars, desc(cyl))
head(mtcars_arrange)
mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
---|---|---|---|---|---|---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | |
Hornet Sportabout | 18.7 | 8 | 360.0 | 175 | 3.15 | 3.44 | 17.02 | 0 | 0 | 3 | 2 |
Duster 360 | 14.3 | 8 | 360.0 | 245 | 3.21 | 3.57 | 15.84 | 0 | 0 | 3 | 4 |
Merc 450SE | 16.4 | 8 | 275.8 | 180 | 3.07 | 4.07 | 17.40 | 0 | 0 | 3 | 3 |
Merc 450SL | 17.3 | 8 | 275.8 | 180 | 3.07 | 3.73 | 17.60 | 0 | 0 | 3 | 3 |
Merc 450SLC | 15.2 | 8 | 275.8 | 180 | 3.07 | 3.78 | 18.00 | 0 | 0 | 3 | 3 |
Cadillac Fleetwood | 10.4 | 8 | 472.0 | 205 | 2.93 | 5.25 | 17.98 | 0 | 0 | 3 | 4 |
Realizar una operación de agregación por grupo:
# Agrupar el conjunto de datos por el número de cilindros (cyl) y calcular la media del consumo de combustible (mpg) y la potencia bruta (hp)
mtcars_group <- group_by(mtcars, cyl)
mtcars_summary <- summarize(mtcars_group, media_mpg = mean(mpg), media_hp = mean(hp))
mtcars_summary
cyl | media_mpg | media_hp |
---|---|---|
<dbl> | <dbl> | <dbl> |
4 | 26.66364 | 82.63636 |
6 | 19.74286 | 122.28571 |
8 | 15.10000 | 209.21429 |