class: center, middle, inverse, title-slide .title[ # Instrumentos de Análisis Urbanos II ] .subtitle[ ## Maestría en Economía Urbana ] .author[ ### ] .institute[ ### Universidad Torcuato Di Tella ] .date[ ### 27/06/2023 ] --- layout: true <div class="my-footer"><span>Instrumentos de Análisis Urbanos II - <a href="https://tuqmano.github.io/geo_utdt/">https://tuqmano.github.io/geo_utdt/</a></span></div> --- exclude: true --- class: center, middle # Sesión II ### Intro a `R` --- class: left # Hoja de Ruta + _Funciones - Paquetes - Mundo `{tidyverse}`_ -- + _Dialectos_: `R base` VS _Tidyverse (pipe)_ -- + _Flujos de trabajo: proyectos (.Rproj) + versiones de control (.git)_ -- + Reproducibilidad y Comunicación (`.R` y `.Rmd`) --- class: center, middle # Funciones - Paquetes - Mundo `{tidyverse}` --- # Paquetes ## ¿Qué son? #### ✔️ Un conjunto funciones, pero también bases de datos y objetos de R en general. -- ## ¿Para qué nos sirven? #### ✔️ Ayudan a incorporar funcionalidades al lenguaje para resolver nuevos problemas o alternativas a viejas soluciones --- class: middle, center, inverse background-image: url(../figs/R1.PNG) background-size: contain --- class: middle, center, inverse background-image: url(../figs/R2.PNG) background-size: contain --- class: middle, center, inverse background-image: url(../figs/R3.PNG) background-size: contain --- class: middle, center, inverse background-image: url(../figs/R4.PNG) background-size: contain --- class: middle, center, inverse background-image: url(../figs/R5.PNG) background-size: contain --- #Paquetes ## INSTALACIÓN - Podemos descargarlos e instalarlos con el siguiente comando: ```r install.packages("nombre_del_paquete") ``` - Sólo es necesario instalar el paquete una vez por computadora. --- #Paquetes ## INVOCACIÓN .pull-left[ - Una vez instalado, cada vez que abramos una nueva sesión de R y querramos utilizar el paquete debemos **cargarlo al ambiente de trabajo** mediante la función: ```r library(nombre_del_paquete) ``` ] .pull-right[ <img src="../figs/invocacion.gif" width="500px" /> ] --- class: center, middle background-image: url(https://github.com/rstudio/hex-stickers/raw/master/PNG/tidyverse.png) background-position: 70% 50% background-size: 10% # [Tidyverse](https://www.tidyverse.org/) --- background-image: url(https://github.com/rstudio/hex-stickers/raw/master/PNG/tidyverse.png) background-position: 95% 5% background-size: 10% # Tidyverse .pull-left[ #### `Tidyverse` es una colección de paquetes de R, pensados para trabajar en "ciencia de datos". ] .pull-right[ <img src="../figs/tidyverse.png" width="781" style="display: block; margin: auto;" /> ] --- background-image: url(https://github.com/rstudio/hex-stickers/raw/master/PNG/tidyverse.png) background-position: 95% 5% background-size: 10% # __¿Por qué tidyverse?__ - ### Orientado a ser leído y escrito por y para seres humanos -- - ### Funciones no pensadas para una tarea específica sino para un proceso de trabajo .pull-left[ <img src="../figs/circuito_del_dato.png" width="110%" style="display: block; margin: auto;" /> ] .pull-right[ <img src="../figs/circuito_del_dato_tidy.png" width="110%" style="display: block; margin: auto;" /> ] -- - ### Su comunidad, basada en los principios del código abierto y trabajo colaborativo --- background-image: url(https://github.com/rstudio/hex-stickers/raw/master/PNG/tidyverse.png) background-position: 95% 5% background-size: 10% # Manifiesto Tidyverse 1. Reutilizar estructuras de datos existentes 2. Armar funciones simples con la _pipa_ (`%<%`) 3. Adoptar la programación funcional 4. Diseñado para humanos! [<svg viewBox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg> The Manifesto](https://tidyverse.tidyverse.org/articles/manifesto.html) --- # __Instalación y uso__ * Sólo una vez (por computadora): ```r install.packages("tidyverse") ``` -- * En cada inicio de sesión de R o Rstudio: ```r library(tidyverse) ``` -- .pull-left[ _No es necesario esto:_ ```r install.packages("dplyr") install.packages("tidyr") install.packages("ggplot2") ``` ] .pull-right[ _Ni esto:_ ```r library(dplyr) library(tidyr) library(ggplot2) ``` ] --- # Dialéctos para `R` ## **R** `base` vs _Tidyverse_ -- ### Creamos una base de trabajo: ```r curso <- data.frame(nombre = c("Juan", "Pedro", "María", "José","Enzo", "Ariel", "Eva"), edad = c(25, 32, 21,40, 30, 28, 37), nacimiento = c(1993, 1986, 1997, 1978, 1988, 1990, 1981), programa = c("spss", "stata", "stata", "excel", "R", "stata", "spss"), nivel = c(3, 5,7, 6, 2, 6, 8)) ``` --- background-image: url(https://github.com/rstudio/hex-stickers/raw/master/PNG/tidyverse.png) background-position: 95% 5% background-size: 10% # **R** `base` vs _pipe (%>%) de tidyverse_ .pull-left[ ## Edad promedio del curso --> **`R base`** ```r mean(curso$edad) ``` ``` ## [1] 30.42857 ``` ] -- .pull-right[ ## Edad promedio del curso --> _**Tidy**_ ```r library(tidyverse) # cargo paquete curso$edad `%>%` mean() ``` ``` ## [1] 30.42857 ``` ] --- background-image: url(https://github.com/rstudio/hex-stickers/raw/master/PNG/tidyverse.png) background-position: 95% 5% background-size: 10% # Pipe = tubería de tareas .pull-left[ ## Edad promedio del curso (redondeado) --> **`base`** ```r round(mean(curso$edad), digits = 1) ``` ``` ## [1] 30.4 ``` ] .pull-right[ ## Edad promedio del curso (redondeado) --> _**Tidy**_ ```r curso$edad `%>%` mean() `%>%` round(digits = 1) ``` ``` ## [1] 30.4 ``` ] --- # Práctica Traducir del esquema `R base` al esquema `tidy` la siguiente sentencia que realiza las siguientes operaciones: - Calcula la cantidad de veces que se menciona cada programa con `table()` - Calcula la distribución porcentual de dicha frecuencia con `prop.table() * 100` - Redondea el resultado con `round()` ```r round(prop.table(table(curso$programa)) * 100, digits = 1) ``` -- ## Solución grupal --- # Lectura / escritura de archivos ## Algunos paquetes para importar archivos (más allá de las funciones de r base): .pull-left[ ### Paquete `{readr}` - `read_csv()` --> *.csv* - `read_table()` --> *.txt* - `read_rds()` --> *.rds* ] .pull-right[ ### Paquete `{haven}` - `read_sav()` --> SPSS - `read_dta()` --> STATA - `read_sas()` --> SAS ] --- # Base de trabajo En el material de la clase se puso a disposición una base de ejercicio. La informaciuón con la que se cuenta es aquella referida a los **Inmuebles Propios del Estado Nacional y Alquilados**, provista por la Dirección Nacional del Registro de Bienes Inmuebles - Agencia de Administración de Bienes del Estado - Jefatura de Gabinete de Ministros. > [Descarga de la base de datos](https://datos.gob.ar/dataset/otros-inmuebles-propios-estado-nacional-alquilados) -- ### Importamos a R: ```r base_inmuebles <- read_csv(`file =` "la_ruta_del_archivo/el_nombre_del_archivo.csv", `col_names =` TRUE) ``` --- class: center, middle, inverse background-image: url(https://d33wubrfki0l68.cloudfront.net/521a038ed009b97bf73eb0a653b1cb7e66645231/8e3fd/assets/figs/rstudio-icon.png) background-position: 95% 5% background-size: 10% # Proyectos de Trabajo (`.Rproj`) <img src="../figs/r_proj.png" width="15%" /> #### [<svg viewBox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg> Using Projects](https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects) --- # Proyectos y rutas de trabajo Intentar correr el siguiente script: ```r library(tidyverse) b_inmuebles <- read_csv("C:/Users/pablo/Documents/Pablo/Cursos R/R+DiTella/geo_utdt_fork/sesiones/data/inmuebles-estado-nacional.csv") ``` -- ### A tener en cuenta respecto a la sentencia para importar el archivo: - Si se la compartimos a otra persona, __se rompe__ - Si cambiamos de computadora, __se rompe__ - Si lo cambiamos de lugar, __se rompe__ --- class: center, middle, inverse # Proyectos de Trabajo (`.git`) --- # `.git ` ![](https://yabellini.github.io/Intro_to_Git_with_Rstudio/img/git_concept_map.png)<!-- --> **Fuente**: https://yabellini.netlify.app/es/post/githubconr/ --- # `.git ` por terminal #### verbos + usados * git status -- * git pull -- * git add <file> / git add -A (para agregar todos) -- * git commit -m 'agregar mensaje' -- * git push -- #### [<svg viewBox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg> Happy Git](https://happygitwithr.com/) --- # `.git ` por consola <img src="../figs/consola_git.png" width="1815" /> --- # `.git ` por consola <img src="../figs/consola_commit.png" width="1819" /> --- background-image: url(https://d33wubrfki0l68.cloudfront.net/521a038ed009b97bf73eb0a653b1cb7e66645231/8e3fd/assets/figs/rstudio-icon.png) background-position: 95% 5% background-size: 10% # `R` vs `.Rmd` ```r "scripts/archivos.R" "scripts/archivos.Rmd" ``` --- background-image: url(https://d33wubrfki0l68.cloudfront.net/521a038ed009b97bf73eb0a653b1cb7e66645231/8e3fd/assets/figs/rstudio-icon.png) background-position: 95% 5% background-size: 10% # R Markdown <img src="https://d33wubrfki0l68.cloudfront.net/3215c7166555d2ac02ef678fd025c171f90db23c/4e60a/images/bandone.png" width="60%" /> ### [<svg viewBox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg> R Markdown: The Definitive Guide](https://bookdown.org/yihui/rmarkdown/)