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=