class: center, middle .linea-superior[] .linea-inferior[] <img src="imagenes/logo_portada2.png" width="200" /> ## INE Educa: Clases abiertas de R ## Tidy data: *pivot_wider()* ## Proyecto Ciencia de Datos --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Tidy data En ocasiones necesitamos tranformar la distribuición o formato de nuestros dataframes, desde **wide** a **long**, o viceversa -- .center[<img src="imagenes/wide_long.png" height="300" />] -- Para esto el paquete **tidyr** nos ofrece las funciones **pivot_longer()** y **pivot_wider()** -- En este video revisaremos **pivot_wider()** --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Tidy data *pivot_wider()* Esta función se puede considerar como la opuesta a **pivot_longer()** -- .center[<img src="imagenes/tidyr-pivot_wider_longer.gif" height="300" />] -- Esta función se utiliza para ordenar un dataframe de forma tal de mostrar categorías de una variable como columnas de un dataframe -- Incrementa el número de las columnas y disminuye el número de las filas -- El formato **wide** es útil para la presentación de cuadros de resumen con doble entrada y es mas legible para los humanos --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Tidy data *pivot_wider()* Ejemplo de `pivot_wider()`: -- ```r df1 <- data.frame(region = c(1, 2),hombres = c(100, 200),mujeres = c(50, 300)) df2 <- df1 %>% pivot_longer(cols = -region , names_to = "sexo", values_to = "total_sexo") df2 ``` ``` ## # A tibble: 4 × 3 ## region sexo total_sexo ## <dbl> <chr> <dbl> ## 1 1 hombres 100 ## 2 1 mujeres 50 ## 3 2 hombres 200 ## 4 2 mujeres 300 ``` -- ```r library(tidyr) df2 %>% pivot_wider(names_from = "sexo",values_from = "total_sexo") ``` ``` ## # A tibble: 2 × 3 ## region hombres mujeres ## <dbl> <dbl> <dbl> ## 1 1 100 50 ## 2 2 200 300 ``` --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Tidy data *pivot_wider()* ## Función `pivot_wider()` ``` ## # A tibble: 2 × 3 ## region hombres mujeres ## <dbl> <dbl> <dbl> ## 1 1 100 50 ## 2 2 200 300 ``` Los argumentos más comunes de esta función son: -- - *names_from*: categorías que se quiere convertir en columnas - *values_from*: columna desde la cual extraer los valores --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Tidy data En algunos casos, no contamos con una variable que contenga texto, para hacer el "pivoteo" ``` ## # A tibble: 32 × 3 ## # Groups: region [16] ## region sexo n ## <dbl> <dbl> <int> ## 1 1 1 1187 ## 2 1 2 1288 ## 3 2 1 1536 ## 4 2 2 1601 ## 5 3 1 1409 ## 6 3 2 1524 ## 7 4 1 2481 ## 8 4 2 2679 ## 9 5 1 5296 ## 10 5 2 5829 ## # ℹ 22 more rows ``` -- En esos casos, podemos usar el parámetro **names_prefix** ```r calidad::ene %>% group_by(region, sexo) %>% summarise(n = n()) %>% pivot_wider(names_from = sexo, values_from = n, * names_prefix = "sexo" ) ``` ``` ## # A tibble: 16 × 3 ## # Groups: region [16] ## region sexo1 sexo2 ## <dbl> <int> <int> ## 1 1 1187 1288 ## 2 2 1536 1601 ## 3 3 1409 1524 ## 4 4 2481 2679 ## 5 5 5296 5829 ## 6 6 2611 2806 ## 7 7 3121 3313 ## 8 8 4975 5742 ## 9 9 2204 2420 ## 10 10 3128 3226 ## 11 11 1003 1014 ## 12 12 915 947 ## 13 13 7184 8117 ## 14 14 1771 1920 ## 15 15 1481 1543 ## 16 16 1687 1884 ``` --- class: center, middle .linea-superior[] .linea-inferior[] <img src="imagenes/logo_portada2.png" width="200" /> ## INE Educa: Clases abiertas de R ## Proyecto Ciencia de Datos ## Tidy data: *pivot_wider()*