En este cuaderno se explora las funcionalidades de la libreria dplyr:
-mutate() agrega nuevas variables que son funciones de variables existentes.
-select() elige variables en función de sus nombres.
-filter() Selecciona casos en función de sus valores.
-summarise() reduce varios valores a un solo resumen.
-arrange() Cambia el orden de las filas.
Primero hay que instalar la libreria dplyr desde la consola. Luego cargamos la libreria:
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Vamos a usar un conjunto de datos muy famoso que se llama Iris. Estos datos contienen 50 registros de mediciones de 3 especies de Iris, Setosa, Virginica y Versicolor.
Ahora vamos a importar los datos a nuestro cuaderno:
data("iris")
Que clase de objeto es iris?
class(iris)
## [1] "data.frame"
Cómo se puede saber su tamaño?
dim(iris)
## [1] 150 5
El resultado anterior significa que el iris se compone de 150 filas y 5 columnas. Ahora veamos la cabeza de los datos:
head(iris)
Ahora, veamos las ultimas filas:
tail(iris)
Cuales son las estadisticas de iris?
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
La funcion filter() selecciona casos en funcion de sus valores. Escojamos las filas correspondientes a la especie de setosa:
(iris_filtered <- iris %>%
filter(Species == "setosa"))
La función select() selecciona variables en función de sus nombres. Vamos a elegir las columnas Sepal.Length y Sepal.Width:
(iris_selected <- iris %>%
select(Sepal.Length, Sepal.Width))
Ahora, ordenemos las filas usando un atributo particular:
(iris_sorted <- iris %>%
arrange(Sepal.Length))
Nota:Tenga en cuenta que las filas se organizan en orden ascendente utilizando la columna que indicamos en el código.
Es posible ordenar las filas en orden descendente?
(iris_sorted <- iris %>%
arrange(desc(Sepal.Length)))
La función mutate() crea nuevas columnas que son funciones de variables existentes. También puede modificar (si el nombre es el mismo que una columna existente) y eliminar columnas (estableciendo su valor en NULL).
(iris_mutated <- iris %>%
mutate(Petal.Ratio = Petal.Length / Petal.Width))
Asegúrese de comprobar los valores de la columna Petal.Ratio en la tabla anterior.
(iris_summary <- iris %>%
group_by(Species) %>%
summarise(
Avg.Sepal.Length = mean(Sepal.Length),
Min.Petal.Width = min(Petal.Width),
Max.Petal.Length = max(Petal.Length)
))
Todas las funciones dplyr toman un marco de datos (o tibble) como primer argumento. En lugar de forzar al usuario a guardar objetos intermedios o funciones de anidación, dplyr proporciona el operador %>% de magrittr.
x %>% f(y) se convierte en f(x, y) por lo que el resultado de un paso se “canaliza” al siguiente paso.
Puede utilizar la canalización para reescribir varias operaciones que puede leer de izquierda a derecha, de arriba a abajo (leyendo el operador de tubería como “entonces”).
La función summarise() calcula un resumen para cada grupo. Esto significa que comienza desde group_keys(), agregando la variable de resumen al lado derecho:
Usemos el operador de tubería/pipe para resumir el conjunto de datos del iris.
(iris_result <- iris %>%
filter(Sepal.Length > 5.0) %>%
group_by(Species) %>%
summarise(Avg.Petal.Length = mean(Petal.Length)))
Escribir un codigo que resuma el conjunto de datos del iris basado en Sepal.Width
(iris_summary <- iris %>%
group_by(Species) %>%
summarise(
sdPetal.Width = sd(Petal.Width)
))
sessionInfo()
## R version 4.3.1 (2023-06-16 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
##
## Matrix products: default
##
##
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8 LC_CTYPE=Spanish_Colombia.utf8
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Colombia.utf8
##
## time zone: America/Bogota
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] dplyr_1.1.3
##
## loaded via a namespace (and not attached):
## [1] vctrs_0.6.3 cli_3.6.1 knitr_1.43 rlang_1.1.1
## [5] xfun_0.40 generics_0.1.3 jsonlite_1.8.7 glue_1.6.2
## [9] htmltools_0.5.6 sass_0.4.7 fansi_1.0.4 rmarkdown_2.24
## [13] evaluate_0.21 jquerylib_0.1.4 tibble_3.2.1 fastmap_1.1.1
## [17] yaml_2.3.7 lifecycle_1.0.3 compiler_4.3.1 pkgconfig_2.0.3
## [21] rstudioapi_0.15.0 digest_0.6.33 R6_2.5.1 tidyselect_1.2.0
## [25] utf8_1.2.3 pillar_1.9.0 magrittr_2.0.3 bslib_0.5.1
## [29] withr_2.5.0 tools_4.3.1 cachem_1.0.8