1. INTRODUCCION
En este cuaderno se exploran las sigientes funcionalidades de la
funcion dplyr:
-mutate()adds new variables that are functions of existing
variables -select() picks variables based on their names.
-filter() picks cases based on their values.
-summarise() reduces multiple values down to a single summary.
-arrange() changes the ordering of the rows.
2. Configuración
Primero hay que instalar la libreria dplyr desde la
consola. +Luego cargamos la libreria:
library(dplyr)
3. El conjunto de datos Iris
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.

Primero cargamos los datos a nuestro cuaderno:
data(iris)
Que clase de objeto es Iris?
class(iris)
Cómo se puede saber su tamaño?
dim(iris)
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)
4. Las funcionalidades de dplyr
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)
))
4. The pipe / La tuberia
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)))
5. Tarea
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)
))
6. Inormación
sessionInfo()
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQphdXRob3I6IEdhYnJpZWwgQW5kcnMgR3V0aWVycmV6IEdvbWV6DQpkYXRlOiAxMy8wOS8yMw0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCiMjIDEuIElOVFJPRFVDQ0lPTg0KDQpFbiBlc3RlIGN1YWRlcm5vIHNlIGV4cGxvcmFuIGxhcyBzaWdpZW50ZXMgZnVuY2lvbmFsaWRhZGVzIGRlIGxhIGZ1bmNpb24gZHBseXI6DQoNCi0qbXV0YXRlKCkqYWRkcyBuZXcgdmFyaWFibGVzIHRoYXQgYXJlIGZ1bmN0aW9ucyBvZiBleGlzdGluZyB2YXJpYWJsZXMNCi0qc2VsZWN0KCkqIHBpY2tzIHZhcmlhYmxlcyBiYXNlZCBvbiB0aGVpciBuYW1lcy4NCi0qZmlsdGVyKCkqIHBpY2tzIGNhc2VzIGJhc2VkIG9uIHRoZWlyIHZhbHVlcy4NCi0qc3VtbWFyaXNlKCkqIHJlZHVjZXMgbXVsdGlwbGUgdmFsdWVzIGRvd24gdG8gYSBzaW5nbGUgc3VtbWFyeS4NCi0qYXJyYW5nZSgpKiBjaGFuZ2VzIHRoZSBvcmRlcmluZyBvZiB0aGUgcm93cy4NCg0KIyMgMi4gQ29uZmlndXJhY2nDs24NCg0KUHJpbWVybyBoYXkgcXVlIGluc3RhbGFyIGxhIGxpYnJlcmlhICoqZHBseXIqKiBkZXNkZSBsYSBjb25zb2xhLiANCitMdWVnbyBjYXJnYW1vcyBsYSBsaWJyZXJpYToNCg0KYGBge3IgbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkoZHBseXIpDQpgYGANCiMjIDMuIEVsIGNvbmp1bnRvIGRlIGRhdG9zIElyaXMNCg0KVmFtb3MgYSB1c2FyIHVuIGNvbmp1bnRvIGRlIGRhdG9zIG11eSBmYW1vc28gcXVlIHNlIGxsYW1hICoqSXJpcyoqLiBFc3RvcyBkYXRvcyBjb250aWVuZW4gNTAgcmVnaXN0cm9zIGRlIG1lZGljaW9uZXMgZGUgMyBlc3BlY2llcyBkZSBJcmlzLCBTZXRvc2EsIFZpcmdpbmljYSB5IFZlcnNpY29sb3IuDQoNCiFbXShJcmlzLnBuZykNCg0KUHJpbWVybyBjYXJnYW1vcyBsb3MgZGF0b3MgYSBudWVzdHJvIGN1YWRlcm5vOg0KDQpgYGB7cn0NCmRhdGEoaXJpcykNCmBgYA0KDQpRdWUgY2xhc2UgZGUgb2JqZXRvIGVzIElyaXM/DQoNCmBgYHtyfQ0KY2xhc3MoaXJpcykNCmBgYA0KDQpDw7NtbyBzZSBwdWVkZSBzYWJlciBzdSB0YW1hw7FvPw0KDQpgYGB7cn0NCg0KZGltKGlyaXMpDQoNCmBgYA0KDQpFbCByZXN1bHRhZG8gYW50ZXJpb3Igc2lnbmlmaWNhIHF1ZSBlbCBpcmlzIHNlIGNvbXBvbmUgZGUgMTUwIGZpbGFzIHkgNSBjb2x1bW5hcy4NCg0KQWhvcmEgdmVhbW9zIGxhIGNhYmV6YSBkZSBsb3MgZGF0b3M6DQoNCmBgYHtyfQ0KDQpoZWFkKGlyaXMpDQoNCmBgYA0KDQpBaG9yYSwgdmVhbW9zIGxhcyB1bHRpbWFzIGZpbGFzOg0KDQpgYGB7cn0NCg0KdGFpbChpcmlzKQ0KDQpgYGANCg0KQ3VhbGVzIHNvbiBsYXMgZXN0YWRpc3RpY2FzIGRlIGlyaXM/DQoNCmBgYHtyfQ0KDQpzdW1tYXJ5KGlyaXMpDQoNCmBgYA0KDQojIyA0LiBMYXMgZnVuY2lvbmFsaWRhZGVzIGRlIGRwbHlyDQoNCkxhIGZ1bmNpb24gKipmaWx0ZXIoKSoqIHNlbGVjY2lvbmEgY2Fzb3MgZW4gZnVuY2lvbiBkZSBzdXMgdmFsb3Jlcy4gRXNjb2phbW9zIGxhcyBmaWxhcyBjb3JyZXNwb25kaWVudGVzIGEgbGEgZXNwZWNpZSBkZSBzZXRvc2E6DQoNCmBgYHtyfQ0KDQooaXJpc19maWx0ZXJlZCA8LSBpcmlzICU+JQ0KDQogZmlsdGVyKFNwZWNpZXMgPT0gInNldG9zYSIpKQ0KDQpgYGANCg0KTGEgZnVuY2nDs24gKipzZWxlY3QoKSoqIHNlbGVjY2lvbmEgdmFyaWFibGVzIGVuIGZ1bmNpw7NuIGRlIHN1cyBub21icmVzLiBWYW1vcyBhIGVsZWdpciBsYXMgY29sdW1uYXMgU2VwYWwuTGVuZ3RoIHkgU2VwYWwuV2lkdGg6DQoNCmBgYHtyfQ0KDQooaXJpc19zZWxlY3RlZCA8LSBpcmlzICU+JQ0KDQogICBzZWxlY3QoU2VwYWwuTGVuZ3RoLCBTZXBhbC5XaWR0aCkpDQoNCmBgYA0KDQpBaG9yYSwgb3JkZW5lbW9zIGxhcyBmaWxhcyB1c2FuZG8gdW4gYXRyaWJ1dG8gcGFydGljdWxhcjoNCg0KYGBge3J9DQoNCihpcmlzX3NvcnRlZCA8LSBpcmlzICU+JQ0KDQogICBhcnJhbmdlKFNlcGFsLkxlbmd0aCkpDQoNCmBgYA0KDQoqKk5vdGEqKjpUZW5nYSBlbiBjdWVudGEgcXVlIGxhcyBmaWxhcyBzZSBvcmdhbml6YW4gZW4gb3JkZW4gYXNjZW5kZW50ZSB1dGlsaXphbmRvIGxhIGNvbHVtbmEgcXVlIGluZGljYW1vcyBlbiBlbCBjw7NkaWdvLg0KDQpFcyBwb3NpYmxlIG9yZGVuYXIgbGFzIGZpbGFzIGVuIG9yZGVuIGRlc2NlbmRlbnRlPw0KDQpgYGB7cn0NCg0KKGlyaXNfc29ydGVkIDwtIGlyaXMgJT4lDQoNCiAgIGFycmFuZ2UoZGVzYyhTZXBhbC5MZW5ndGgpKSkNCg0KYGBgDQoNCkxhIGZ1bmNpw7NuICoqbXV0YXRlKCkqKiBjcmVhIG51ZXZhcyBjb2x1bW5hcyBxdWUgc29uIGZ1bmNpb25lcyBkZSB2YXJpYWJsZXMgZXhpc3RlbnRlcy4gVGFtYmnDqW4gcHVlZGUgbW9kaWZpY2FyIChzaSBlbCBub21icmUgZXMgZWwgbWlzbW8gcXVlIHVuYSBjb2x1bW5hIGV4aXN0ZW50ZSkgeSBlbGltaW5hciBjb2x1bW5hcyAoZXN0YWJsZWNpZW5kbyBzdSB2YWxvciBlbiBOVUxMKS4NCg0KYGBge3J9DQoNCihpcmlzX211dGF0ZWQgPC0gaXJpcyAlPiUNCg0KICAgbXV0YXRlKFBldGFsLlJhdGlvID0gUGV0YWwuTGVuZ3RoIC8gUGV0YWwuV2lkdGgpKQ0KDQpgYGANCg0KQXNlZ8O6cmVzZSBkZSBjb21wcm9iYXIgbG9zIHZhbG9yZXMgZGUgbGEgY29sdW1uYSBQZXRhbC5SYXRpbyBlbiBsYSB0YWJsYSBhbnRlcmlvci4NCg0KYGBge3J9DQoNCihpcmlzX3N1bW1hcnkgPC0gaXJpcyAlPiUNCg0KICBncm91cF9ieShTcGVjaWVzKSAlPiUNCg0KICBzdW1tYXJpc2UoDQoNCiAgICBBdmcuU2VwYWwuTGVuZ3RoID0gbWVhbihTZXBhbC5MZW5ndGgpLA0KDQogICAgTWluLlBldGFsLldpZHRoID0gbWluKFBldGFsLldpZHRoKSwNCg0KICAgIE1heC5QZXRhbC5MZW5ndGggPSBtYXgoUGV0YWwuTGVuZ3RoKQ0KDQogICkpDQoNCmBgYA0KDQojIyA0LiBUaGUgcGlwZSAvIExhIHR1YmVyaWENCg0KVG9kYXMgbGFzIGZ1bmNpb25lcyBkcGx5ciB0b21hbiB1biBtYXJjbyBkZSBkYXRvcyAobyB0aWJibGUpIGNvbW8gcHJpbWVyIGFyZ3VtZW50by4gRW4gbHVnYXIgZGUgZm9yemFyIGFsIHVzdWFyaW8gYSBndWFyZGFyIG9iamV0b3MgaW50ZXJtZWRpb3MgbyBmdW5jaW9uZXMgZGUgYW5pZGFjacOzbiwgZHBseXIgcHJvcG9yY2lvbmEgZWwgb3BlcmFkb3IgJT4lIGRlIG1hZ3JpdHRyLg0KDQp4ICU+JSBmKHkpIHNlIGNvbnZpZXJ0ZSBlbiBmKHgsIHkpIHBvciBsbyBxdWUgZWwgcmVzdWx0YWRvIGRlIHVuIHBhc28gc2UgImNhbmFsaXphIiBhbCBzaWd1aWVudGUgcGFzby4NCg0KUHVlZGUgdXRpbGl6YXIgbGEgY2FuYWxpemFjacOzbiBwYXJhIHJlZXNjcmliaXIgdmFyaWFzIG9wZXJhY2lvbmVzIHF1ZSBwdWVkZSBsZWVyIGRlIGl6cXVpZXJkYSBhIGRlcmVjaGEsIGRlIGFycmliYSBhIGFiYWpvIChsZXllbmRvIGVsIG9wZXJhZG9yIGRlIHR1YmVyw61hIGNvbW8gImVudG9uY2VzIikuDQoNCkxhIGZ1bmNpw7NuIHN1bW1hcmlzZSgpIGNhbGN1bGEgdW4gcmVzdW1lbiBwYXJhIGNhZGEgZ3J1cG8uIEVzdG8gc2lnbmlmaWNhIHF1ZSBjb21pZW56YSBkZXNkZSBncm91cF9rZXlzKCksIGFncmVnYW5kbyBsYSB2YXJpYWJsZSBkZSByZXN1bWVuIGFsIGxhZG8gZGVyZWNobzoNCg0KVXNlbW9zIGVsIG9wZXJhZG9yIGRlICoqdHViZXLDrWEvcGlwZSoqIHBhcmEgcmVzdW1pciBlbCBjb25qdW50byBkZSBkYXRvcyBkZWwgaXJpcy4NCg0KYGBge3J9DQoNCihpcmlzX3Jlc3VsdCA8LSBpcmlzICU+JQ0KDQogICBmaWx0ZXIoU2VwYWwuTGVuZ3RoID4gNS4wKSAlPiUNCg0KICAgZ3JvdXBfYnkoU3BlY2llcykgJT4lDQoNCiAgIHN1bW1hcmlzZShBdmcuUGV0YWwuTGVuZ3RoID0gbWVhbihQZXRhbC5MZW5ndGgpKSkNCg0KYGBgDQoNCiMjIDUuIFRhcmVhDQoNCkVzY3JpYmlyIHVuIGNvZGlnbyBxdWUgcmVzdW1hIGVsIGNvbmp1bnRvIGRlIGRhdG9zIGRlbCBpcmlzIGJhc2FkbyBlbiAqU2VwYWwuV2lkdGgqDQoNCmBgYHtyfQ0KDQooaXJpc19zdW1tYXJ5IDwtIGlyaXMgJT4lDQoNCiAgIGdyb3VwX2J5KFNwZWNpZXMpICU+JQ0KDQogICBzdW1tYXJpc2UoDQoNCiAgICAgc2RQZXRhbC5XaWR0aCA9IHNkKFBldGFsLldpZHRoKQ0KDQogICApKQ0KDQpgYGANCg0KIyMgNi4gSW5vcm1hY2nDs24NCg0KYGBge3J9DQoNCnNlc3Npb25JbmZvKCkNCg0KYGBgDQo=