class: center, middle, inverse, title-slide # Data wrangling ## Taller R Octubre 28 ### Anabelle Laurent --- # ¡Bienvenidos! 😄 -- En esta presentacion vamos a aprender como manejar o “domar” datos (data wrangling, en inglés). -- El objectivo es de tener datos en una forma conveniente para su visualizacíon y analysis. + que cada columna sea una variable + que cada fila sea una observación + que cada celda sea un valor -- Por eso vamos a usar tidyverse --- class: inverse, middle, center # Primero: ¿ que es tidyverse ? 🤔 <!-- get a flipbook version of the my_cars code chunk - pauses are where parentheses are balanced --> --- <center><img src="images/tidyverse.png" style="width: 70%" /> </center> Tidyverse es una colleccíon de R paquetes que ayuda para todo el processo de ciencia de datos --- <center><img src="images/tidyverseDS.png" style="width: 70%" /> </center> Hoy vamos a explotar **dplyr** que ayuda para la manupilación de datos. --- <center><img src="images/dplyr.png" style="width: 30%" /> </center> Las funciones más usadas en dplyr: - **seleccionar** variables (SELECT) - **filtrar** variables (FILTER) - **mutar y crear** nuevas variables (MUTATE) - **sumarizar** (SUMMARIZE) - **agrupar** las variables (GROUP_BY) --- <center><img src="images/dplyr.png" style="width: 30%" /> </center> El operador `%>%` (se llama la tubería, o pipe en ingles), permite expresar de forma clara una secuencia de múltiples operaciones. Se pueder leer como un “ENTONCES”. Es un operador específico a tidyverse --- ```r install.packages("tidyverse") library(tidyverse) ``` --- class: inverse, center, middle # Segundo: los datos que vamos a usar ```r install.packages("datos") library(datos) paises ``` --- ```r head(paises, n =10) # muestra las "n" primeras lineas de datos ``` ``` # A tibble: 10 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Afganistán Asia 1972 36.1 13079460 740. 6 Afganistán Asia 1977 38.4 14880372 786. 7 Afganistán Asia 1982 39.9 12881816 978. 8 Afganistán Asia 1987 40.8 13867957 852. 9 Afganistán Asia 1992 41.7 16317921 649. 10 Afganistán Asia 1997 41.8 22227415 635. ``` --- class: inverse, center, middle # SELECT La funcion SELECT permite de seleccionar columnas por nombre --- count: false .panel1-seleccionar-rotate[ ```r paises %>% * select (pais,anio, poblacion) ``` ] .panel2-seleccionar-rotate[ ``` # A tibble: 1,704 × 3 pais anio poblacion <fct> <int> <int> 1 Afganistán 1952 8425333 2 Afganistán 1957 9240934 3 Afganistán 1962 10267083 4 Afganistán 1967 11537966 5 Afganistán 1972 13079460 6 Afganistán 1977 14880372 7 Afganistán 1982 12881816 8 Afganistán 1987 13867957 9 Afganistán 1992 16317921 10 Afganistán 1997 22227415 # … with 1,694 more rows ``` ] --- count: false .panel1-seleccionar-rotate[ ```r paises %>% * select (pais:esperanza_de_vida) ``` ] .panel2-seleccionar-rotate[ ``` # A tibble: 1,704 × 4 pais continente anio esperanza_de_vida <fct> <fct> <int> <dbl> 1 Afganistán Asia 1952 28.8 2 Afganistán Asia 1957 30.3 3 Afganistán Asia 1962 32.0 4 Afganistán Asia 1967 34.0 5 Afganistán Asia 1972 36.1 6 Afganistán Asia 1977 38.4 7 Afganistán Asia 1982 39.9 8 Afganistán Asia 1987 40.8 9 Afganistán Asia 1992 41.7 10 Afganistán Asia 1997 41.8 # … with 1,694 more rows ``` ] --- count: false .panel1-seleccionar-rotate[ ```r paises %>% * select (-poblacion) ``` ] .panel2-seleccionar-rotate[ ``` # A tibble: 1,704 × 5 pais continente anio esperanza_de_vida pib_per_capita <fct> <fct> <int> <dbl> <dbl> 1 Afganistán Asia 1952 28.8 779. 2 Afganistán Asia 1957 30.3 821. 3 Afganistán Asia 1962 32.0 853. 4 Afganistán Asia 1967 34.0 836. 5 Afganistán Asia 1972 36.1 740. 6 Afganistán Asia 1977 38.4 786. 7 Afganistán Asia 1982 39.9 978. 8 Afganistán Asia 1987 40.8 852. 9 Afganistán Asia 1992 41.7 649. 10 Afganistán Asia 1997 41.8 635. # … with 1,694 more rows ``` ] --- count: false .panel1-seleccionar-rotate[ ```r paises %>% * select(-c(anio, poblacion)) ``` ] .panel2-seleccionar-rotate[ ``` # A tibble: 1,704 × 4 pais continente esperanza_de_vida pib_per_capita <fct> <fct> <dbl> <dbl> 1 Afganistán Asia 28.8 779. 2 Afganistán Asia 30.3 821. 3 Afganistán Asia 32.0 853. 4 Afganistán Asia 34.0 836. 5 Afganistán Asia 36.1 740. 6 Afganistán Asia 38.4 786. 7 Afganistán Asia 39.9 978. 8 Afganistán Asia 40.8 852. 9 Afganistán Asia 41.7 649. 10 Afganistán Asia 41.8 635. # … with 1,694 more rows ``` ] <style> .panel1-seleccionar-rotate { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-seleccionar-rotate { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-seleccionar-rotate { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, center, middle # FILTER la funcion FILTER permite de filtrar les lineas que respectan una condición --- count: false .panel1-filtrar-rotate[ ```r paises %>% * filter (pais=="Ecuador") ``` ] .panel2-filtrar-rotate[ ``` # A tibble: 12 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Ecuador Américas 1952 48.4 3548753 3522. 2 Ecuador Américas 1957 51.4 4058385 3781. 3 Ecuador Américas 1962 54.6 4681707 4086. 4 Ecuador Américas 1967 56.7 5432424 4579. 5 Ecuador Américas 1972 58.8 6298651 5281. 6 Ecuador Américas 1977 61.3 7278866 6680. 7 Ecuador Américas 1982 64.3 8365850 7214. 8 Ecuador Américas 1987 67.2 9545158 6482. 9 Ecuador Américas 1992 69.6 10748394 7104. 10 Ecuador Américas 1997 72.3 11911819 7429. 11 Ecuador Américas 2002 74.2 12921234 5773. 12 Ecuador Américas 2007 75.0 13755680 6873. ``` ] --- count: false .panel1-filtrar-rotate[ ```r paises %>% * filter (anio==1982) ``` ] .panel2-filtrar-rotate[ ``` # A tibble: 142 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1982 39.9 12881816 978. 2 Albania Europa 1982 70.4 2780097 3631. 3 Argelia África 1982 61.4 20033753 5745. 4 Angola África 1982 39.9 7016384 2757. 5 Argentina Américas 1982 69.9 29341374 8998. 6 Australia Oceanía 1982 74.7 15184200 19477. 7 Austria Europa 1982 73.2 7574613 21597. 8 Baréin Asia 1982 69.1 377967 19211. 9 Bangladesh Asia 1982 50.0 93074406 677. 10 Bélgica Europa 1982 73.9 9856303 20980. # … with 132 more rows ``` ] --- count: false .panel1-filtrar-rotate[ ```r paises %>% * filter (anio==1982 & pais=="Ecuador") ``` ] .panel2-filtrar-rotate[ ``` # A tibble: 1 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Ecuador Américas 1982 64.3 8365850 7214. ``` ] --- count: false .panel1-filtrar-rotate[ ```r paises %>% * filter (pais %in% c("China","Vietnam") & anio==1982) ``` ] .panel2-filtrar-rotate[ ``` # A tibble: 2 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 China Asia 1982 65.5 1000281000 962. 2 Vietnam Asia 1982 58.8 56142181 707. ``` ] --- count: false .panel1-filtrar-rotate[ ```r paises %>% * filter (anio > 1962) ``` ] .panel2-filtrar-rotate[ ``` # A tibble: 1,278 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1967 34.0 11537966 836. 2 Afganistán Asia 1972 36.1 13079460 740. 3 Afganistán Asia 1977 38.4 14880372 786. 4 Afganistán Asia 1982 39.9 12881816 978. 5 Afganistán Asia 1987 40.8 13867957 852. 6 Afganistán Asia 1992 41.7 16317921 649. 7 Afganistán Asia 1997 41.8 22227415 635. 8 Afganistán Asia 2002 42.1 25268405 727. 9 Afganistán Asia 2007 43.8 31889923 975. 10 Albania Europa 1967 66.2 1984060 2760. # … with 1,268 more rows ``` ] --- count: false .panel1-filtrar-rotate[ ```r paises %>% * filter(anio <=1962) ``` ] .panel2-filtrar-rotate[ ``` # A tibble: 426 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Albania Europa 1952 55.2 1282697 1601. 5 Albania Europa 1957 59.3 1476505 1942. 6 Albania Europa 1962 64.8 1728137 2313. 7 Argelia África 1952 43.1 9279525 2449. 8 Argelia África 1957 45.7 10270856 3014. 9 Argelia África 1962 48.3 11000948 2551. 10 Angola África 1952 30.0 4232095 3521. # … with 416 more rows ``` ] <style> .panel1-filtrar-rotate { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filtrar-rotate { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filtrar-rotate { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, center, middle # Resumen --- ```r # todas las columnas menos "pib_per_capita" paises %>% select (-pib_per_capita) # las columnas entre 'pais' y 'esperanza_de_vida' paises %>% select (pais:esperanza_de_vida) # usa "&" cuando hay mas que una condicion paises %>% filter (anio==1982 & pais=="Ecuador") # usa "!" cuando no quieres specificas lineas paises %>% filter (!pais=="Francia") # usa "%in%" cuando una variable pertenece a un vector paises %>% filter (pais %in% c("China", "Japan", "Vietnam") ``` --- class: inverse, center, middle # RENAME La funcion RENAME permite de cambiar el nombre de una variable --- ```r paises %>% rename(esperanza = esperanza_de_vida, pib= pib_per_capita) ``` ``` # A tibble: 1,704 × 6 pais continente anio esperanza poblacion pib <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Afganistán Asia 1972 36.1 13079460 740. 6 Afganistán Asia 1977 38.4 14880372 786. 7 Afganistán Asia 1982 39.9 12881816 978. 8 Afganistán Asia 1987 40.8 13867957 852. 9 Afganistán Asia 1992 41.7 16317921 649. 10 Afganistán Asia 1997 41.8 22227415 635. # … with 1,694 more rows ``` Consejo: rename(nuevo_nombre = viejo_nombre) --- class: inverse, center, middle # ARRANGE La funcion ARRANGE permite de ordernar filas --- count: false .panel1-ordenar-rotate[ ```r paises %>% * arrange (esperanza_de_vida) ``` ] .panel2-ordenar-rotate[ ``` # A tibble: 1,704 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Ruanda África 1992 23.6 7290203 737. 2 Afganistán Asia 1952 28.8 8425333 779. 3 Gambia África 1952 30 284320 485. 4 Angola África 1952 30.0 4232095 3521. 5 Sierra Leona África 1952 30.3 2143249 880. 6 Afganistán Asia 1957 30.3 9240934 821. 7 Camboya Asia 1977 31.2 6978607 525. 8 Mozambique África 1952 31.3 6446316 469. 9 Sierra Leona África 1957 31.6 2295678 1004. 10 Burkina Faso África 1952 32.0 4469979 543. # … with 1,694 more rows ``` ] --- count: false .panel1-ordenar-rotate[ ```r paises %>% * arrange (desc(esperanza_de_vida)) ``` ] .panel2-ordenar-rotate[ ``` # A tibble: 1,704 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Japón Asia 2007 82.6 127467972 31656. 2 Hong Kong, China Asia 2007 82.2 6980412 39725. 3 Japón Asia 2002 82 127065841 28605. 4 Islandia Europa 2007 81.8 301931 36181. 5 Suiza Europa 2007 81.7 7554661 37506. 6 Hong Kong, China Asia 2002 81.5 6762476 30209. 7 Australia Oceanía 2007 81.2 20434176 34435. 8 España Europa 2007 80.9 40448191 28821. 9 Suecia Europa 2007 80.9 9031088 33860. 10 Israel Asia 2007 80.7 6426679 25523. # … with 1,694 more rows ``` ] --- count: false .panel1-ordenar-rotate[ ```r paises %>% * arrange (continente,esperanza_de_vida) ``` ] .panel2-ordenar-rotate[ ``` # A tibble: 1,704 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Ruanda África 1992 23.6 7290203 737. 2 Gambia África 1952 30 284320 485. 3 Angola África 1952 30.0 4232095 3521. 4 Sierra Leona África 1952 30.3 2143249 880. 5 Mozambique África 1952 31.3 6446316 469. 6 Sierra Leona África 1957 31.6 2295678 1004. 7 Burkina Faso África 1952 32.0 4469979 543. 8 Angola África 1957 32.0 4561361 3828. 9 Gambia África 1957 32.1 323150 521. 10 Guinea Bissau África 1952 32.5 580653 300. # … with 1,694 more rows ``` ] <style> .panel1-ordenar-rotate { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-ordenar-rotate { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-ordenar-rotate { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> Usa desc() por tener un orden descendente --- class: inverse, center, middle # USAR MULTIPLES FUNCIONES --- count: false .panel1-resumen-auto[ ```r *paises ``` ] .panel2-resumen-auto[ ``` # A tibble: 1,704 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Afganistán Asia 1972 36.1 13079460 740. 6 Afganistán Asia 1977 38.4 14880372 786. 7 Afganistán Asia 1982 39.9 12881816 978. 8 Afganistán Asia 1987 40.8 13867957 852. 9 Afganistán Asia 1992 41.7 16317921 649. 10 Afganistán Asia 1997 41.8 22227415 635. # … with 1,694 more rows ``` ] --- count: false .panel1-resumen-auto[ ```r paises %>% * select (continente, pais,anio, poblacion,esperanza_de_vida) ``` ] .panel2-resumen-auto[ ``` # A tibble: 1,704 × 5 continente pais anio poblacion esperanza_de_vida <fct> <fct> <int> <int> <dbl> 1 Asia Afganistán 1952 8425333 28.8 2 Asia Afganistán 1957 9240934 30.3 3 Asia Afganistán 1962 10267083 32.0 4 Asia Afganistán 1967 11537966 34.0 5 Asia Afganistán 1972 13079460 36.1 6 Asia Afganistán 1977 14880372 38.4 7 Asia Afganistán 1982 12881816 39.9 8 Asia Afganistán 1987 13867957 40.8 9 Asia Afganistán 1992 16317921 41.7 10 Asia Afganistán 1997 22227415 41.8 # … with 1,694 more rows ``` ] --- count: false .panel1-resumen-auto[ ```r paises %>% select (continente, pais,anio, poblacion,esperanza_de_vida) %>% * filter (continente == "Américas", * anio >=1980, * pais %in% c("Ecuador", "México", "Argentina")) ``` ] .panel2-resumen-auto[ ``` # A tibble: 18 × 5 continente pais anio poblacion esperanza_de_vida <fct> <fct> <int> <int> <dbl> 1 Américas Argentina 1982 29341374 69.9 2 Américas Argentina 1987 31620918 70.8 3 Américas Argentina 1992 33958947 71.9 4 Américas Argentina 1997 36203463 73.3 5 Américas Argentina 2002 38331121 74.3 6 Américas Argentina 2007 40301927 75.3 7 Américas Ecuador 1982 8365850 64.3 8 Américas Ecuador 1987 9545158 67.2 9 Américas Ecuador 1992 10748394 69.6 10 Américas Ecuador 1997 11911819 72.3 11 Américas Ecuador 2002 12921234 74.2 12 Américas Ecuador 2007 13755680 75.0 13 Américas México 1982 71640904 67.4 14 Américas México 1987 80122492 69.5 15 Américas México 1992 88111030 71.5 16 Américas México 1997 95895146 73.7 17 Américas México 2002 102479927 74.9 18 Américas México 2007 108700891 76.2 ``` ] --- count: false .panel1-resumen-auto[ ```r paises %>% select (continente, pais,anio, poblacion,esperanza_de_vida) %>% filter (continente == "Américas", anio >=1980, pais %in% c("Ecuador", "México", "Argentina")) %>% * rename (esperanza = esperanza_de_vida) ``` ] .panel2-resumen-auto[ ``` # A tibble: 18 × 5 continente pais anio poblacion esperanza <fct> <fct> <int> <int> <dbl> 1 Américas Argentina 1982 29341374 69.9 2 Américas Argentina 1987 31620918 70.8 3 Américas Argentina 1992 33958947 71.9 4 Américas Argentina 1997 36203463 73.3 5 Américas Argentina 2002 38331121 74.3 6 Américas Argentina 2007 40301927 75.3 7 Américas Ecuador 1982 8365850 64.3 8 Américas Ecuador 1987 9545158 67.2 9 Américas Ecuador 1992 10748394 69.6 10 Américas Ecuador 1997 11911819 72.3 11 Américas Ecuador 2002 12921234 74.2 12 Américas Ecuador 2007 13755680 75.0 13 Américas México 1982 71640904 67.4 14 Américas México 1987 80122492 69.5 15 Américas México 1992 88111030 71.5 16 Américas México 1997 95895146 73.7 17 Américas México 2002 102479927 74.9 18 Américas México 2007 108700891 76.2 ``` ] <style> .panel1-resumen-auto { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-resumen-auto { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-resumen-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, center, middle # MUTATE La funcion MUTATE permite de añadir nuevas columnas --- count: false .panel1-mutate2-auto[ ```r *paises ``` ] .panel2-mutate2-auto[ ``` # A tibble: 1,704 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Afganistán Asia 1972 36.1 13079460 740. 6 Afganistán Asia 1977 38.4 14880372 786. 7 Afganistán Asia 1982 39.9 12881816 978. 8 Afganistán Asia 1987 40.8 13867957 852. 9 Afganistán Asia 1992 41.7 16317921 649. 10 Afganistán Asia 1997 41.8 22227415 635. # … with 1,694 more rows ``` ] --- count: false .panel1-mutate2-auto[ ```r paises %>% * mutate (poblacion_k = poblacion/1000) ``` ] .panel2-mutate2-auto[ ``` # A tibble: 1,704 × 7 pais continente anio esperanza_de_vi… poblacion pib_per_capita poblacion_k <fct> <fct> <int> <dbl> <int> <dbl> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 8425. 2 Afganistán Asia 1957 30.3 9240934 821. 9241. 3 Afganistán Asia 1962 32.0 10267083 853. 10267. 4 Afganistán Asia 1967 34.0 11537966 836. 11538. 5 Afganistán Asia 1972 36.1 13079460 740. 13079. 6 Afganistán Asia 1977 38.4 14880372 786. 14880. 7 Afganistán Asia 1982 39.9 12881816 978. 12882. 8 Afganistán Asia 1987 40.8 13867957 852. 13868. 9 Afganistán Asia 1992 41.7 16317921 649. 16318. 10 Afganistán Asia 1997 41.8 22227415 635. 22227. # … with 1,694 more rows ``` ] --- count: false .panel1-mutate2-auto[ ```r paises %>% mutate (poblacion_k = poblacion/1000) ``` ] .panel2-mutate2-auto[ ``` # A tibble: 1,704 × 7 pais continente anio esperanza_de_vi… poblacion pib_per_capita poblacion_k <fct> <fct> <int> <dbl> <int> <dbl> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 8425. 2 Afganistán Asia 1957 30.3 9240934 821. 9241. 3 Afganistán Asia 1962 32.0 10267083 853. 10267. 4 Afganistán Asia 1967 34.0 11537966 836. 11538. 5 Afganistán Asia 1972 36.1 13079460 740. 13079. 6 Afganistán Asia 1977 38.4 14880372 786. 14880. 7 Afganistán Asia 1982 39.9 12881816 978. 12882. 8 Afganistán Asia 1987 40.8 13867957 852. 13868. 9 Afganistán Asia 1992 41.7 16317921 649. 16318. 10 Afganistán Asia 1997 41.8 22227415 635. 22227. # … with 1,694 more rows ``` ] <style> .panel1-mutate2-auto { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-mutate2-auto { color: black; width: 49%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-mutate2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> Tener la poblacion en miles (K) --- class: inverse, center, middle # SUMMARIZE Y GROUP_BY Permiten dividir y resumir los datos en grupos --- ### Ejemplo 1: ¿ Cual es la esperanza de vida media POR continente ? --- count: false .panel1-group_by-auto[ ```r *paises ``` ] .panel2-group_by-auto[ ``` # A tibble: 1,704 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Afganistán Asia 1972 36.1 13079460 740. 6 Afganistán Asia 1977 38.4 14880372 786. 7 Afganistán Asia 1982 39.9 12881816 978. 8 Afganistán Asia 1987 40.8 13867957 852. 9 Afganistán Asia 1992 41.7 16317921 649. 10 Afganistán Asia 1997 41.8 22227415 635. # … with 1,694 more rows ``` ] --- count: false .panel1-group_by-auto[ ```r paises %>% * group_by(continente) ``` ] .panel2-group_by-auto[ ``` # A tibble: 1,704 × 6 # Groups: continente [5] pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Afganistán Asia 1972 36.1 13079460 740. 6 Afganistán Asia 1977 38.4 14880372 786. 7 Afganistán Asia 1982 39.9 12881816 978. 8 Afganistán Asia 1987 40.8 13867957 852. 9 Afganistán Asia 1992 41.7 16317921 649. 10 Afganistán Asia 1997 41.8 22227415 635. # … with 1,694 more rows ``` ] --- count: false .panel1-group_by-auto[ ```r paises %>% group_by(continente) %>% * summarize(var=mean(esperanza_de_vida)) ``` ] .panel2-group_by-auto[ ``` # A tibble: 5 × 2 continente var <fct> <dbl> 1 África 48.9 2 Américas 64.7 3 Asia 60.1 4 Europa 71.9 5 Oceanía 74.3 ``` ] <style> .panel1-group_by-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-group_by-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-group_by-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- ### Ejemplo 2: ¿ Cual es la esperanza de vida media POR continente y POR anio antes de los 70s ? --- count: false .panel1-group_by2-auto[ ```r *paises ``` ] .panel2-group_by2-auto[ ``` # A tibble: 1,704 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Afganistán Asia 1972 36.1 13079460 740. 6 Afganistán Asia 1977 38.4 14880372 786. 7 Afganistán Asia 1982 39.9 12881816 978. 8 Afganistán Asia 1987 40.8 13867957 852. 9 Afganistán Asia 1992 41.7 16317921 649. 10 Afganistán Asia 1997 41.8 22227415 635. # … with 1,694 more rows ``` ] --- count: false .panel1-group_by2-auto[ ```r paises %>% * filter(anio <1970) ``` ] .panel2-group_by2-auto[ ``` # A tibble: 568 × 6 pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Albania Europa 1952 55.2 1282697 1601. 6 Albania Europa 1957 59.3 1476505 1942. 7 Albania Europa 1962 64.8 1728137 2313. 8 Albania Europa 1967 66.2 1984060 2760. 9 Argelia África 1952 43.1 9279525 2449. 10 Argelia África 1957 45.7 10270856 3014. # … with 558 more rows ``` ] --- count: false .panel1-group_by2-auto[ ```r paises %>% filter(anio <1970) %>% * group_by(continente,anio) ``` ] .panel2-group_by2-auto[ ``` # A tibble: 568 × 6 # Groups: continente, anio [20] pais continente anio esperanza_de_vida poblacion pib_per_capita <fct> <fct> <int> <dbl> <int> <dbl> 1 Afganistán Asia 1952 28.8 8425333 779. 2 Afganistán Asia 1957 30.3 9240934 821. 3 Afganistán Asia 1962 32.0 10267083 853. 4 Afganistán Asia 1967 34.0 11537966 836. 5 Albania Europa 1952 55.2 1282697 1601. 6 Albania Europa 1957 59.3 1476505 1942. 7 Albania Europa 1962 64.8 1728137 2313. 8 Albania Europa 1967 66.2 1984060 2760. 9 Argelia África 1952 43.1 9279525 2449. 10 Argelia África 1957 45.7 10270856 3014. # … with 558 more rows ``` ] --- count: false .panel1-group_by2-auto[ ```r paises %>% filter(anio <1970) %>% group_by(continente,anio) %>% * summarize(var=mean(esperanza_de_vida)) ``` ] .panel2-group_by2-auto[ ``` # A tibble: 20 × 3 # Groups: continente [5] continente anio var <fct> <int> <dbl> 1 África 1952 39.1 2 África 1957 41.3 3 África 1962 43.3 4 África 1967 45.3 5 Américas 1952 53.3 6 Américas 1957 56.0 7 Américas 1962 58.4 8 Américas 1967 60.4 9 Asia 1952 46.3 10 Asia 1957 49.3 11 Asia 1962 51.6 12 Asia 1967 54.7 13 Europa 1952 64.4 14 Europa 1957 66.7 15 Europa 1962 68.5 16 Europa 1967 69.7 17 Oceanía 1952 69.3 18 Oceanía 1957 70.3 19 Oceanía 1962 71.1 20 Oceanía 1967 71.3 ``` ] <style> .panel1-group_by2-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-group_by2-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-group_by2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, center, middle ## EJEMPLO CON OTROS DATOS 🛩 ```r #install.packages("datos") library(datos) vuelos ``` --- ```r head(vuelos,n =10) ``` ``` # A tibble: 10 × 19 anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 1 1 517 515 2 2 2013 1 1 533 529 4 3 2013 1 1 542 540 2 4 2013 1 1 544 545 -1 5 2013 1 1 554 600 -6 6 2013 1 1 554 558 -4 7 2013 1 1 555 600 -5 8 2013 1 1 557 600 -3 9 2013 1 1 557 600 -3 10 2013 1 1 558 600 -2 # … with 13 more variables: horario_llegada <int>, llegada_programada <int>, # atraso_llegada <dbl>, aerolinea <chr>, vuelo <int>, codigo_cola <chr>, # origen <chr>, destino <chr>, tiempo_vuelo <dbl>, distancia <dbl>, # hora <dbl>, minuto <dbl>, fecha_hora <dttm> ``` --- ### ¿Cual es el atraso medio a la llegada por aerolinea ? 🤔 --- count: false .panel1-ejemplo1-auto[ ```r *vuelos ``` ] .panel2-ejemplo1-auto[ ``` # A tibble: 336,776 × 19 anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 1 1 517 515 2 2 2013 1 1 533 529 4 3 2013 1 1 542 540 2 4 2013 1 1 544 545 -1 5 2013 1 1 554 600 -6 6 2013 1 1 554 558 -4 7 2013 1 1 555 600 -5 8 2013 1 1 557 600 -3 9 2013 1 1 557 600 -3 10 2013 1 1 558 600 -2 # … with 336,766 more rows, and 13 more variables: horario_llegada <int>, # llegada_programada <int>, atraso_llegada <dbl>, aerolinea <chr>, # vuelo <int>, codigo_cola <chr>, origen <chr>, destino <chr>, # tiempo_vuelo <dbl>, distancia <dbl>, hora <dbl>, minuto <dbl>, # fecha_hora <dttm> ``` ] --- count: false .panel1-ejemplo1-auto[ ```r vuelos %>% * group_by(aerolinea) ``` ] .panel2-ejemplo1-auto[ ``` # A tibble: 336,776 × 19 # Groups: aerolinea [16] anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 1 1 517 515 2 2 2013 1 1 533 529 4 3 2013 1 1 542 540 2 4 2013 1 1 544 545 -1 5 2013 1 1 554 600 -6 6 2013 1 1 554 558 -4 7 2013 1 1 555 600 -5 8 2013 1 1 557 600 -3 9 2013 1 1 557 600 -3 10 2013 1 1 558 600 -2 # … with 336,766 more rows, and 13 more variables: horario_llegada <int>, # llegada_programada <int>, atraso_llegada <dbl>, aerolinea <chr>, # vuelo <int>, codigo_cola <chr>, origen <chr>, destino <chr>, # tiempo_vuelo <dbl>, distancia <dbl>, hora <dbl>, minuto <dbl>, # fecha_hora <dttm> ``` ] --- count: false .panel1-ejemplo1-auto[ ```r vuelos %>% group_by(aerolinea) %>% * summarize( * delay = mean(atraso_llegada,na.rm=TRUE) * ) ``` ] .panel2-ejemplo1-auto[ ``` # A tibble: 16 × 2 aerolinea delay <chr> <dbl> 1 9E 7.38 2 AA 0.364 3 AS -9.93 4 B6 9.46 5 DL 1.64 6 EV 15.8 7 F9 21.9 8 FL 20.1 9 HA -6.92 10 MQ 10.8 11 OO 11.9 12 UA 3.56 13 US 2.13 14 VX 1.76 15 WN 9.65 16 YV 15.6 ``` ] --- count: false .panel1-ejemplo1-auto[ ```r vuelos %>% group_by(aerolinea) %>% summarize( delay = mean(atraso_llegada,na.rm=TRUE) ) %>% * arrange(desc(delay)) ``` ] .panel2-ejemplo1-auto[ ``` # A tibble: 16 × 2 aerolinea delay <chr> <dbl> 1 F9 21.9 2 FL 20.1 3 EV 15.8 4 YV 15.6 5 OO 11.9 6 MQ 10.8 7 WN 9.65 8 B6 9.46 9 9E 7.38 10 UA 3.56 11 US 2.13 12 VX 1.76 13 DL 1.64 14 AA 0.364 15 HA -6.92 16 AS -9.93 ``` ] <style> .panel1-ejemplo1-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-ejemplo1-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-ejemplo1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- ### ¿Cual es el atraso medio a la llegada en San Francisco por aerolinea por cada mes del verano ☀️? 🤔 --- count: false .panel1-ejemplo2-auto[ ```r *vuelos ``` ] .panel2-ejemplo2-auto[ ``` # A tibble: 336,776 × 19 anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 1 1 517 515 2 2 2013 1 1 533 529 4 3 2013 1 1 542 540 2 4 2013 1 1 544 545 -1 5 2013 1 1 554 600 -6 6 2013 1 1 554 558 -4 7 2013 1 1 555 600 -5 8 2013 1 1 557 600 -3 9 2013 1 1 557 600 -3 10 2013 1 1 558 600 -2 # … with 336,766 more rows, and 13 more variables: horario_llegada <int>, # llegada_programada <int>, atraso_llegada <dbl>, aerolinea <chr>, # vuelo <int>, codigo_cola <chr>, origen <chr>, destino <chr>, # tiempo_vuelo <dbl>, distancia <dbl>, hora <dbl>, minuto <dbl>, # fecha_hora <dttm> ``` ] --- count: false .panel1-ejemplo2-auto[ ```r vuelos %>% * filter(destino=="SFO") ``` ] .panel2-ejemplo2-auto[ ``` # A tibble: 13,331 × 19 anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 1 1 558 600 -2 2 2013 1 1 611 600 11 3 2013 1 1 655 700 -5 4 2013 1 1 729 730 -1 5 2013 1 1 734 737 -3 6 2013 1 1 745 745 0 7 2013 1 1 746 746 0 8 2013 1 1 803 800 3 9 2013 1 1 826 817 9 10 2013 1 1 1029 1030 -1 # … with 13,321 more rows, and 13 more variables: horario_llegada <int>, # llegada_programada <int>, atraso_llegada <dbl>, aerolinea <chr>, # vuelo <int>, codigo_cola <chr>, origen <chr>, destino <chr>, # tiempo_vuelo <dbl>, distancia <dbl>, hora <dbl>, minuto <dbl>, # fecha_hora <dttm> ``` ] --- count: false .panel1-ejemplo2-auto[ ```r vuelos %>% filter(destino=="SFO") %>% * filter(mes %in% c(6,7,8)) ``` ] .panel2-ejemplo2-auto[ ``` # A tibble: 3,697 × 19 anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 6 1 559 600 -1 2 2013 6 1 622 628 -6 3 2013 6 1 653 700 -7 4 2013 6 1 729 730 -1 5 2013 6 1 741 740 1 6 2013 6 1 752 800 -8 7 2013 6 1 756 800 -4 8 2013 6 1 824 824 0 9 2013 6 1 924 915 9 10 2013 6 1 926 930 -4 # … with 3,687 more rows, and 13 more variables: horario_llegada <int>, # llegada_programada <int>, atraso_llegada <dbl>, aerolinea <chr>, # vuelo <int>, codigo_cola <chr>, origen <chr>, destino <chr>, # tiempo_vuelo <dbl>, distancia <dbl>, hora <dbl>, minuto <dbl>, # fecha_hora <dttm> ``` ] --- count: false .panel1-ejemplo2-auto[ ```r vuelos %>% filter(destino=="SFO") %>% filter(mes %in% c(6,7,8)) %>% * group_by(aerolinea, mes) ``` ] .panel2-ejemplo2-auto[ ``` # A tibble: 3,697 × 19 # Groups: aerolinea, mes [15] anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 6 1 559 600 -1 2 2013 6 1 622 628 -6 3 2013 6 1 653 700 -7 4 2013 6 1 729 730 -1 5 2013 6 1 741 740 1 6 2013 6 1 752 800 -8 7 2013 6 1 756 800 -4 8 2013 6 1 824 824 0 9 2013 6 1 924 915 9 10 2013 6 1 926 930 -4 # … with 3,687 more rows, and 13 more variables: horario_llegada <int>, # llegada_programada <int>, atraso_llegada <dbl>, aerolinea <chr>, # vuelo <int>, codigo_cola <chr>, origen <chr>, destino <chr>, # tiempo_vuelo <dbl>, distancia <dbl>, hora <dbl>, minuto <dbl>, # fecha_hora <dttm> ``` ] --- count: false .panel1-ejemplo2-auto[ ```r vuelos %>% filter(destino=="SFO") %>% filter(mes %in% c(6,7,8)) %>% group_by(aerolinea, mes) %>% * summarize( * delay = mean(atraso_llegada,na.rm=TRUE) * ) ``` ] .panel2-ejemplo2-auto[ ``` # A tibble: 15 × 3 # Groups: aerolinea [5] aerolinea mes delay <chr> <int> <dbl> 1 AA 6 32.9 2 AA 7 21.7 3 AA 8 8.39 4 B6 6 24.1 5 B6 7 30.9 6 B6 8 2.58 7 DL 6 13.5 8 DL 7 24.8 9 DL 8 -5.33 10 UA 6 17.2 11 UA 7 18.4 12 UA 8 6.28 13 VX 6 35.1 14 VX 7 45.4 15 VX 8 -2.74 ``` ] --- count: false .panel1-ejemplo2-auto[ ```r vuelos %>% filter(destino=="SFO") %>% filter(mes %in% c(6,7,8)) %>% group_by(aerolinea, mes) %>% summarize( delay = mean(atraso_llegada,na.rm=TRUE) ) %>% * arrange(desc(delay)) ``` ] .panel2-ejemplo2-auto[ ``` # A tibble: 15 × 3 # Groups: aerolinea [5] aerolinea mes delay <chr> <int> <dbl> 1 VX 7 45.4 2 VX 6 35.1 3 AA 6 32.9 4 B6 7 30.9 5 DL 7 24.8 6 B6 6 24.1 7 AA 7 21.7 8 UA 7 18.4 9 UA 6 17.2 10 DL 6 13.5 11 AA 8 8.39 12 UA 8 6.28 13 B6 8 2.58 14 VX 8 -2.74 15 DL 8 -5.33 ``` ] <style> .panel1-ejemplo2-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-ejemplo2-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-ejemplo2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- ### ¿ Cuantos datos tenemos por destino ? 🤔 --- count: false .panel1-ejemplo3-auto[ ```r *vuelos ``` ] .panel2-ejemplo3-auto[ ``` # A tibble: 336,776 × 19 anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 1 1 517 515 2 2 2013 1 1 533 529 4 3 2013 1 1 542 540 2 4 2013 1 1 544 545 -1 5 2013 1 1 554 600 -6 6 2013 1 1 554 558 -4 7 2013 1 1 555 600 -5 8 2013 1 1 557 600 -3 9 2013 1 1 557 600 -3 10 2013 1 1 558 600 -2 # … with 336,766 more rows, and 13 more variables: horario_llegada <int>, # llegada_programada <int>, atraso_llegada <dbl>, aerolinea <chr>, # vuelo <int>, codigo_cola <chr>, origen <chr>, destino <chr>, # tiempo_vuelo <dbl>, distancia <dbl>, hora <dbl>, minuto <dbl>, # fecha_hora <dttm> ``` ] --- count: false .panel1-ejemplo3-auto[ ```r vuelos %>% * group_by(destino) ``` ] .panel2-ejemplo3-auto[ ``` # A tibble: 336,776 × 19 # Groups: destino [105] anio mes dia horario_salida salida_programada atraso_salida <int> <int> <int> <int> <int> <dbl> 1 2013 1 1 517 515 2 2 2013 1 1 533 529 4 3 2013 1 1 542 540 2 4 2013 1 1 544 545 -1 5 2013 1 1 554 600 -6 6 2013 1 1 554 558 -4 7 2013 1 1 555 600 -5 8 2013 1 1 557 600 -3 9 2013 1 1 557 600 -3 10 2013 1 1 558 600 -2 # … with 336,766 more rows, and 13 more variables: horario_llegada <int>, # llegada_programada <int>, atraso_llegada <dbl>, aerolinea <chr>, # vuelo <int>, codigo_cola <chr>, origen <chr>, destino <chr>, # tiempo_vuelo <dbl>, distancia <dbl>, hora <dbl>, minuto <dbl>, # fecha_hora <dttm> ``` ] --- count: false .panel1-ejemplo3-auto[ ```r vuelos %>% group_by(destino) %>% * summarize(datos_destino=n()) ``` ] .panel2-ejemplo3-auto[ ``` # A tibble: 105 × 2 destino datos_destino <chr> <int> 1 ABQ 254 2 ACK 265 3 ALB 439 4 ANC 8 5 ATL 17215 6 AUS 2439 7 AVL 275 8 BDL 443 9 BGR 375 10 BHM 297 # … with 95 more rows ``` ] --- count: false .panel1-ejemplo3-auto[ ```r vuelos %>% group_by(destino) %>% summarize(datos_destino=n()) %>% * arrange(desc(datos_destino)) ``` ] .panel2-ejemplo3-auto[ ``` # A tibble: 105 × 2 destino datos_destino <chr> <int> 1 ORD 17283 2 ATL 17215 3 LAX 16174 4 BOS 15508 5 MCO 14082 6 CLT 14064 7 SFO 13331 8 FLL 12055 9 MIA 11728 10 DCA 9705 # … with 95 more rows ``` ] --- count: false .panel1-ejemplo3-auto[ ```r vuelos %>% group_by(destino) %>% summarize(datos_destino=n()) %>% arrange(desc(datos_destino)) ``` ] .panel2-ejemplo3-auto[ ``` # A tibble: 105 × 2 destino datos_destino <chr> <int> 1 ORD 17283 2 ATL 17215 3 LAX 16174 4 BOS 15508 5 MCO 14082 6 CLT 14064 7 SFO 13331 8 FLL 12055 9 MIA 11728 10 DCA 9705 # … with 95 more rows ``` ] <style> .panel1-ejemplo3-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-ejemplo3-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-ejemplo3-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> Usa n() por tener el tamaño actual del grupo. --- class: inverse, center, middle # PIVOT_LONGER de un formato ancho a largo --- count: false .panel1-pivotlonger-auto[ ```r *relig_income ``` ] .panel2-pivotlonger-auto[ ``` # A tibble: 18 × 11 religion `<$10k` `$10-20k` `$20-30k` `$30-40k` `$40-50k` `$50-75k` `$75-100k` <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 Agnostic 27 34 60 81 76 137 122 2 Atheist 12 27 37 52 35 70 73 3 Buddhist 27 21 30 34 33 58 62 4 Catholic 418 617 732 670 638 1116 949 5 Don’t k… 15 14 15 11 10 35 21 6 Evangel… 575 869 1064 982 881 1486 949 7 Hindu 1 9 7 9 11 34 47 8 Histori… 228 244 236 238 197 223 131 9 Jehovah… 20 27 24 24 21 30 15 10 Jewish 19 19 25 25 30 95 69 11 Mainlin… 289 495 619 655 651 1107 939 12 Mormon 29 40 48 51 56 112 85 13 Muslim 6 7 9 10 9 23 16 14 Orthodox 13 17 23 32 32 47 38 15 Other C… 9 7 11 13 13 14 18 16 Other F… 20 33 40 46 49 63 46 17 Other W… 5 2 3 4 2 7 3 18 Unaffil… 217 299 374 365 341 528 407 # … with 3 more variables: $100-150k <dbl>, >150k <dbl>, # Don't know/refused <dbl> ``` ] --- count: false .panel1-pivotlonger-auto[ ```r relig_income %>% * pivot_longer(!religion, * names_to="income", * values_to="count") ``` ] .panel2-pivotlonger-auto[ ``` # A tibble: 180 × 3 religion income count <chr> <chr> <dbl> 1 Agnostic <$10k 27 2 Agnostic $10-20k 34 3 Agnostic $20-30k 60 4 Agnostic $30-40k 81 5 Agnostic $40-50k 76 6 Agnostic $50-75k 137 7 Agnostic $75-100k 122 8 Agnostic $100-150k 109 9 Agnostic >150k 84 10 Agnostic Don't know/refused 96 # … with 170 more rows ``` ] <style> .panel1-pivotlonger-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-pivotlonger-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-pivotlonger-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, center, middle # PIVOT_WIDER de un formato largo a ancho --- count: false .panel1-pivotwider-auto[ ```r *fish_encounters ``` ] .panel2-pivotwider-auto[ ``` # A tibble: 114 × 3 fish station seen <fct> <fct> <int> 1 4842 Release 1 2 4842 I80_1 1 3 4842 Lisbon 1 4 4842 Rstr 1 5 4842 Base_TD 1 6 4842 BCE 1 7 4842 BCW 1 8 4842 BCE2 1 9 4842 BCW2 1 10 4842 MAE 1 # … with 104 more rows ``` ] --- count: false .panel1-pivotwider-auto[ ```r fish_encounters %>% * pivot_wider(names_from=station, * values_from=seen) ``` ] .panel2-pivotwider-auto[ ``` # A tibble: 19 × 12 fish Release I80_1 Lisbon Rstr Base_TD BCE BCW BCE2 BCW2 MAE MAW <fct> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> 1 4842 1 1 1 1 1 1 1 1 1 1 1 2 4843 1 1 1 1 1 1 1 1 1 1 1 3 4844 1 1 1 1 1 1 1 1 1 1 1 4 4845 1 1 1 1 1 NA NA NA NA NA NA 5 4847 1 1 1 NA NA NA NA NA NA NA NA 6 4848 1 1 1 1 NA NA NA NA NA NA NA 7 4849 1 1 NA NA NA NA NA NA NA NA NA 8 4850 1 1 NA 1 1 1 1 NA NA NA NA 9 4851 1 1 NA NA NA NA NA NA NA NA NA 10 4854 1 1 NA NA NA NA NA NA NA NA NA 11 4855 1 1 1 1 1 NA NA NA NA NA NA 12 4857 1 1 1 1 1 1 1 1 1 NA NA 13 4858 1 1 1 1 1 1 1 1 1 1 1 14 4859 1 1 1 1 1 NA NA NA NA NA NA 15 4861 1 1 1 1 1 1 1 1 1 1 1 16 4862 1 1 1 1 1 1 1 1 1 NA NA 17 4863 1 1 NA NA NA NA NA NA NA NA NA 18 4864 1 1 NA NA NA NA NA NA NA NA NA 19 4865 1 1 1 NA NA NA NA NA NA NA NA ``` ] <style> .panel1-pivotwider-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-pivotwider-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-pivotwider-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> <!-- adjust font size in this css code chunk, currently 80 --> <style type="text/css"> .remark-code{line-height: 1.5; font-size: 80%} @media print { .has-continuation { display: block; } } code.r.hljs.remark-code{ position: relative; overflow-x: hidden; } code.r.hljs.remark-code:hover{ overflow-x:visible; width: 500px; # border-style: solid; } .remark-slide-content { font-size: 24px; } </style> --- # Sitios en español que tratan de dplyr 👩💻 https://es.r4ds.hadley.nz/transform.html#lo-b%C3%A1sico-de-dplyr https://github.com/fdelaunay/tutorial-dplyr-es/blob/master/R/tutorial-dplyr.md