class: left, bottom, inverse background-image: url(Figuras/UC2.png) background-position: 86% 10% background-size: 28% # Clase 10: Datos relacionales ---- ## **Computación Estadística** ### Prof. Ana María Alvarado ### Primer Semestre 2024 --- class: left, middle # La clase de hoy ---- <br/> .pull-left[ .left[ * [Datos Relacionales](#join) * [Taller práctico](#taller) ] ] <!--end of left-column--> .pull-right[ .left[ * [Cadenas de Caracteres](#str) * [Taller práctico](#tallerstr) * [Referencias y material complementario](#adios) ] ]<!--end of right-column--> <br/> <br/> <br/> --- class: left, middle # La clase de hoy ---- ## Packages para esta clase .pull-left[ * `dplyr` * `tidy` * `janitor` * `stringr` ] .pull-right[ ] ## Algunas funciones de esta clase .pull-left[ * `bind_rows()`, `bind_cols()` * `fill()`] .pull-right[ * `inner_join()` * `left_join()`, `right_join()` * `full_join()`] --- name: join class: inverse, middle # Datos relacionales --- name: join # Datos relacionales En análisis de datos, en general, se deben combinar muchas tablas para responder a las preguntas de interés. De manera colectiva, se le llama datos relacionales a esas múltiples tablas de datos, ya que sus relaciones, y no solo los conjuntos de datos individuales, son importantes. .center[ <img src="https://es.r4ds.hadley.nz/diagrams_w_text_as_path/es/relational-nycflights.svg" width="500px" /> ] Por lo general, los datos se estructuran en varias tablas, que se pueden unir a través de una clave principal o una clave externa. Estos identificadores demuestran las diferentes relaciones que existen entre las tablas y estas relaciones generalmente se ilustran a través de diferentes tipos de modelos de datos. --- name: join # Unión de varios conjuntos de datos Recordemos que para unir o combinar varios conjuntos de datos por filas o columnas, sin un identificador común, usamos las funciones `bind_rows()` y `bind_cols()` * La función `bind_rows()` se usa para combinar filas de dos conjuntos de datos. .center[ <img src="Figuras\bind_row.png" width="400px" /> ] * La función `bind_cols()` se usa para combinar columnas de dos conjuntos de datos. .center[ <img src="Figuras\bind_col.png" width="400px" /> ] --- # Unión de varios conjuntos de datos a través de una llave La librería `dplyr` cuenta con diferentes funciones que permiten el entrelazado de bases de datos. Las funciones **join()** son útiles cuando se quiere cruzar información de distintas fuentes pero con alguna variable en común (como por ejemplo, alguna variable ID). .center[ <img src="https://www.garrickadenbuie.com/project/tidyexplain/images/static/png/original-dfs.png" width="400px" /> ] --- <span style="color:white">.-.</span> .left-column[ <br> # Full join Mantiene los registros de ambas tablas. Cuando no hay valores coincidentes, devuelve `NA`. ] .right-column[ <img src="https://raw.githubusercontent.com/gadenbuie/tidyexplain/main/images/full-join.gif" width="500px" /> <br> > Animaciones: Garrick Aiden-Buie ] --- <span style="color:white">.-.</span> .left-column[ <br> # Inner join Mantiene las filas que están en ambos conjuntos de datos ] .right-column[ <img src="https://raw.githubusercontent.com/gadenbuie/tidyexplain/main/images/inner-join.gif" width="500px" /> <br> <br> ] --- <span style="color:white">.-.</span> .left-column[ <br> # Left join Prioriza los datos de la tabla de la izquierda... ] .right-column[ <img src="https://raw.githubusercontent.com/gadenbuie/tidyexplain/main/images/left-join.gif" width="500px" /> ] --- <span style="color:white">.-.</span> .left-column[ <br> # Left join ... si hay varias coincidencias, devuelve las combinaciones de las coincidencias. ] .right-column[ <img src="https://raw.githubusercontent.com/gadenbuie/tidyexplain/main/images/left-join-extra.gif" width="500px" /> ] --- <span style="color:white">.-.</span> .left-column[ <br> # Right join Similar a la anterior, pero prioriza la tabla de la derecha. ] .right-column[ <img src="https://raw.githubusercontent.com/gadenbuie/tidyexplain/main/images/right-join.gif" width="500px" /> ] --- <span style="color:white">.-.</span> .left-column[ <br> # Semi join Mantiene las filas de las `x` que hay valores coincidentes `y`, manteniendo solo las columnas `x`. ] .right-column[ <img src="https://raw.githubusercontent.com/gadenbuie/tidyexplain/main/images/semi-join.gif" width="500px" /> ] --- <span style="color:white">.-.</span> .left-column[ <br> # Anti join Todas las filas de las `x` que no hay valores coincidentes `y`, manteniendo solo las columnas de `x`. ] .right-column[ <img src="https://raw.githubusercontent.com/gadenbuie/tidyexplain/main/images/anti-join.gif" width="500px" /> <br> <br> ] --- # Taller Práctico <br> Los datos **INE-Comunas-2002-2020.xls** contiene información de la población estimada por comuna y la evolución de algunos indicadores demográficos entre los años 2002-2020. Use esta información, en conjunto con la información en **codigos.xls** para obtener la población estimada anual por región. *Fuente: www.ine.cl* --- name: adios class: inverse, middle # Referencias y Material Complementario --- # Referencias y Material Complementario * R4DS: [Datos relacionales](https://es.r4ds.hadley.nz/13-relational-data.html) * Pagina Web dplyr para [Join](https://www.tidyverse.org/blog/2023/01/dplyr-1-1-0-joins/) * Data Wrangling with dplyr and tidyr[Cheat Sheet](https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf/) * [tidiexplain](https://www.garrickadenbuie.com/project/tidyexplain/) por Garrick Aden‑Buie. --- class: middle, inverse background-image: url(Figuras/fondo.jpg) background-size: cover .pull-left[ # **¡Gracias!** <br/> <br/> ## Ana María Alvarado ### amalvara@uc.cl ]