background-color: #272822 <br> <br> <br> <br> <br> <br> <h1 style='color:white'> <center> R para contextos humanitarios de emergencia</center></h1> ## <center><font style='color:#E495A5'>I</font><font style='color:#D89F7F'>n</font><font style='color:#BDAB66'>t</font><font style='color:#96B56C'>r</font><font style='color:#65BC8C'>o</font><font style='color:#39BEB1'>d</font><font style='color:#55B8D0'>u</font><font style='color:#91ACE1'>c</font><font style='color:#C29DDE'>c</font><font style='color:#DE94C8'>i</font><font style='color:#E495A5'>ó</font><font style='color:#D89F7F'>n</font></center> ### <center><font style='color:#E495A5'>V</font><font style='color:#D89F7F'>i</font><font style='color:#BDAB66'>o</font><font style='color:#96B56C'>l</font><font style='color:#65BC8C'>e</font><font style='color:#39BEB1'>t</font><font style='color:#55B8D0'>a</font> <font style='color:#91ACE1'>R</font><font style='color:#C29DDE'>o</font><font style='color:#DE94C8'>i</font><font style='color:#E495A5'>z</font><font style='color:#D89F7F'>m</font><font style='color:#BDAB66'>a</font><font style='color:#96B56C'>n</font></center> --- <div class="my-header"></div> ##<font style='color:#E495A5'>H</font><font style='color:#D89F7F'>o</font><font style='color:#BDAB66'>l</font><font style='color:#96B56C'>a</font><font style='color:#65BC8C'>!</font> - Me llamo **Violeta** - Soy **Matemática** e **Instructora Certificada por RStudio** - Me gusta **visualizar datos, visitar museos, tomar té, etc, etc.** <center> <img src="img/grafico.jpg" alt="Visualización de datos" width="250"> <img src="img/te.jpg" alt="Té" width="280"> </center> <center> <img src="img/museo.jpg" alt="Museo Pompidou" width="200"> </center> --- <div class="my-header"></div> ## Objetivos del taller - Entender qué son y para qué sirven R y RStudio - Saber buscar ayuda en el mundo R - Poder hacer un análisis de datos sencillo y completo, todo en R - Poder aprovechar R para introducirlo en su flujo de trabajo habitual ## Modalidad del taller - Presentación de los temas con ejemplos - Ejercicios intercalados para interactuar - "Live coding" ## Requisitos - Asumimos que ya tienen instalado R y RStudio - En caso contrario: seguir los pasos de [este video](https://www.youtube.com/watch?v=GkItqGfCkog&feature=youtu.be) - También necesitamos PowerBI para el segundo día --- <div class="my-header"></div> ## Desafíos de hoy - Entender qué es R y qué es RStudio - Aprender a organizar nuestros proyectos (de R) - Leer correctamente una base de datos - Generar nuevas columnas a partir de información de otras columnas y generar resúmenes a partir de los datos --- <div class="my-header"></div> ## <font style='color:#E495A5'>Q</font><font style='color:#D89F7F'>u</font><font style='color:#BDAB66'>é</font> <font style='color:#96B56C'>h</font><font style='color:#65BC8C'>e</font><font style='color:#39BEB1'>r</font><font style='color:#55B8D0'>r</font><font style='color:#91ACE1'>a</font><font style='color:#C29DDE'>m</font><font style='color:#DE94C8'>i</font><font style='color:#E495A5'>e</font><font style='color:#D89F7F'>n</font><font style='color:#BDAB66'>t</font><font style='color:#96B56C'>a</font><font style='color:#65BC8C'>s</font> <font style='color:#39BEB1'>p</font><font style='color:#55B8D0'>a</font><font style='color:#91ACE1'>r</font><font style='color:#C29DDE'>a</font> <font style='color:#DE94C8'>a</font><font style='color:#E495A5'>n</font><font style='color:#D89F7F'>á</font><font style='color:#BDAB66'>l</font><font style='color:#96B56C'>i</font><font style='color:#65BC8C'>s</font><font style='color:#39BEB1'>i</font><font style='color:#55B8D0'>s</font> <font style='color:#91ACE1'>d</font><font style='color:#C29DDE'>e</font> <font style='color:#DE94C8'>d</font><font style='color:#E495A5'>a</font><font style='color:#D89F7F'>t</font><font style='color:#BDAB66'>o</font><font style='color:#96B56C'>s</font> <font style='color:#65BC8C'>u</font><font style='color:#39BEB1'>t</font><font style='color:#55B8D0'>i</font><font style='color:#91ACE1'>l</font><font style='color:#C29DDE'>i</font><font style='color:#DE94C8'>z</font><font style='color:#E495A5'>a</font><font style='color:#D89F7F'>n</font><font style='color:#BDAB66'>?</font> .flex[ .can-edit[ - Excel - GIS - Power BI - Word ] ] .flex[ .w-50[ **Ventajas** .can-edit.key-rstudio-gets-me[ - Intuitivos para usar ] ] .w-50[ **Desventajas** .can-edit.key-rstudio-gets-me-not[ - Son muy específicos para cada tarea ] ] ] --- <div class="my-header"></div> ## Si ya tenemos: - Excel - Kobo - GIS - Power BI - Word - InDesign - Ilustrator ## Entonces por qué R? ## Porque con R podemos: - Realizar la mayoría de esas tareas - Automatizar procesos - Interactuar fácilmente con muchas herramientas Y además... es abierto y gratuito --- <div class="my-header"></div> ## <font style='color:#E495A5'>D</font><font style='color:#D89F7F'>e</font><font style='color:#BDAB66'>s</font><font style='color:#96B56C'>v</font><font style='color:#65BC8C'>e</font><font style='color:#39BEB1'>n</font><font style='color:#55B8D0'>t</font><font style='color:#91ACE1'>a</font><font style='color:#C29DDE'>j</font><font style='color:#DE94C8'>a</font><font style='color:#E495A5'>:</font> <font style='color:#D89F7F'>l</font><font style='color:#BDAB66'>a</font> <font style='color:#96B56C'>t</font><font style='color:#65BC8C'>í</font><font style='color:#39BEB1'>p</font><font style='color:#55B8D0'>i</font><font style='color:#91ACE1'>c</font><font style='color:#C29DDE'>a</font> <font style='color:#DE94C8'>r</font><font style='color:#E495A5'>e</font><font style='color:#D89F7F'>l</font><font style='color:#BDAB66'>a</font><font style='color:#96B56C'>c</font><font style='color:#65BC8C'>i</font><font style='color:#39BEB1'>ó</font><font style='color:#55B8D0'>n</font> <font style='color:#91ACE1'>d</font><font style='color:#C29DDE'>e</font> <font style='color:#DE94C8'>u</font><font style='color:#E495A5'>n</font> <font style='color:#D89F7F'>u</font><font style='color:#BDAB66'>s</font><font style='color:#96B56C'>u</font><font style='color:#65BC8C'>a</font><font style='color:#39BEB1'>r</font><font style='color:#55B8D0'>i</font><font style='color:#91ACE1'>o</font> <font style='color:#C29DDE'>c</font><font style='color:#DE94C8'>o</font><font style='color:#E495A5'>n</font> <font style='color:#D89F7F'>R</font> <center><img src="img/anteseratipo.png" alt="Caricatura sobre la relación del usuario con R. Al principio la relación es tormentosa y luego se hacen amigos." height="490"></center> <p style="color: gray; font-size:15px"> Ilustración de Allison Horst</p> --- <div class="my-header"></div> ## Algunas cosas que podemos hacer en R - Leer datos - Transformar y resumir datos - Visualizar datos - Generar reportes automáticos - Crear sitios web. p. ej.: https://violetr.netlify.app/ - Hacer mapas - Desarrollar aplicaciones interactivas: - https://shiny.rstudio.com/gallery/india-blood-banks.html - https://violetr.shinyapps.io/hiv_hnp/ - https://vac-lshtm.shinyapps.io/ncov_tracker --- <div class="my-header"></div> ## R en contextos humanitarios de emergencia - Hay un grupo de usuarios y desarrolladores de R que trabajan en esta área: [HumanitaRian useR group](https://humanitarian-user-group.github.io/about/) - Creado en una reunión de la UNHCR - Blog y grupo de Skype - [Charla](https://resources.rstudio.com/resources/rstudioglobal-2021/humanitarian-data-science-with-r/) de [Ahmadou Dicko](https://www.ahmadoudicko.com/) sobre R en contextos humanitarios en `rstudio::global` (subtítulos en Español). - **Documentación** y **Reproducibilidad de los procesos** - Hay funciones específicamente hechas para manejar este tipo de datos y conectarse con herramientas populares como [Kobo](https://www.kobotoolbox.org/) o [HDX](https://data.humdata.org/). - Existen manuales de buenas prácticas sobre como crear reportes. Por ejemplo, [How to quickly produce statistical reports? The UNHCR “R-Cookbook”](https://edouard-legoupil.github.io/unhcr_paged/) --- <div class="my-header"></div> ## Material del curso El material del taller está disponible en .flex[ .can-edit[ - url ] ] Licencia: [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/deed.es_ES). Este material está inspirado en: - [R para Clima](https://eliocamp.github.io/r-clima/) de Paola Corrales y Elio Campitelli - [De excel a R](https://paocorrales.github.io/deExcelaR/index.html) de Paola Corrales y Elio Campitelli - [Master the Tidyverse](https://github.com/rstudio-education/master-the-tidyverse-instructors) de Garrett Grolemund --- background-color: #272822 <br> <br> <br> <br> <br> <br> # <center><font style='color:#E495A5'>E</font><font style='color:#D89F7F'>m</font><font style='color:#BDAB66'>p</font><font style='color:#96B56C'>e</font><font style='color:#65BC8C'>z</font><font style='color:#39BEB1'>a</font><font style='color:#55B8D0'>m</font><font style='color:#91ACE1'>o</font><font style='color:#C29DDE'>s</font><font style='color:#DE94C8'>!</font></center> --- <div class="my-header"></div> ## Qué es R? Qué es RStudio? - R es el lenguaje de programación, es la forma de darle instrucciones a la computadora - RStudio es la interfaz gráfica (lo que vemos) ![](img/lenguajes.png) --- <div class="my-header"></div> ## RStudio: Como se ve la primera vez A la izquierda, en la consola, podemos escribir código en R Este se ejecutará al apretar `Enter` ![](img/Rstudio.png) --- <div class="my-header"></div> ## RStudio: Como se ve habitualmente Vamos a hacer cosas interesantes, y vamos a querer guardarlas Por eso la configuración normal de RStudio será asi, con cuatro paneles El de arriba a la izquierda es un bloc de notas ![](img/Rstudio2.png) --- <div class="my-header"></div> ## RStudio culinario ![](img/rstudio-cocina.png) <p style="color: gray; font-size:15px"> Imagen del curso "R para Clima" - Paola Corrales y Elio Campitelli <br> https://eliocamp.github.io/r-clima/index.html </p> --- <div class="my-header"></div> ## Cómo le damos instrucciones a R? Como ya vieron en el video para instalar R, podemos pedirle a R que compute operaciones básicas. Y también no tan básicas. ```r 2 + 2 ``` ``` ## [1] 4 ``` ```r sqrt(2) ``` ``` ## [1] 1.414214 ``` Esto solo nos devuelve el valor Pero si queremos guardarlo en algún lugar (para que quede disponible en la mesada): ```r raiz_dos <- sqrt(2) raiz_dos ``` ``` ## [1] 1.414214 ``` --- <div class="my-header"></div> ## Variables en R ```r raiz_dos <- sqrt(2) raiz_dos ``` ``` ## [1] 1.414214 ``` **En Excel:** Es parecido a hacer =SQRT(2) (o =RCUAD(2)) en la celda A2 Sabemos que ese resultado está en la celda A2 **En R:** Ese resultado está en la variable `raiz_dos` que aparece en el environment (la mesada) **Pero... La analogía no es 100% util:** [PollEv.com/violetaroizm482](PollEv.com/violetaroizm482) ```r x <- 2 y <- x + 2 x <- 3 ``` --- <div class="my-header"></div> ## Vectores en R - Es la unidad básica en R - Casi todo es un vector (por eso vemos el [1] a la izquierda en los resultados) - Todos los elementos de un vector son de un mismo tipo (numérico, caracter, etc) ```r vector1 <- c(3, 5, 6.1, 7) vector1 ``` ``` ## [1] 3.0 5.0 6.1 7.0 ``` ```r vector2 <- 1:20 vector2 ``` ``` ## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ``` Puedo calcular el promedio de los elementos de un vector ```r mean(vector2) ``` ``` ## [1] 10.5 ``` --- <div class="my-header"></div> ## Vectores en R ```r vector1 <- c(3, 5, 6.1, 7) vector1 ``` ``` ## [1] 3.0 5.0 6.1 7.0 ``` Puedo acceder al elemento que está en el lugar 2 del vector ```r vector1[2] ``` ``` ## [1] 5 ``` Puedo obtener todos los valores de un vector salvo el elemento del lugar 2 asi: ```r vector1[-2] ``` ``` ## [1] 3.0 6.1 7.0 ``` --- <div class="my-header"></div> ## Listas en R Qué pasa si quiero guardar más de un tipo de elemento en una variable? Listas! se crean con list() y pueden contener cualquier tipo de datos, incluso listas ```r mi_agenda <- list(Carlos = c(tel = 41232342), Maria = c(tel = 25362819, edad = 25)) mi_agenda$Carlos ``` ``` ## tel ## 41232342 ``` ```r mi_agenda[[2]] ``` ``` ## tel edad ## 25362819 25 ``` --- <div class="my-header"></div> ## Funciones en R R tiene funciones útiles incorporadas directamente > `sqrt`, `+`, `-`, `mean`, `sum`, etc Se aplican a una o más variables y devuelven un valor Las entradas de las funciones (puede ser 1 o más) se llaman parámetros Pueden ser obligatorios u opcionales > `sqrt` se aplica a un número positivo y devuelve su raíz cuadrada Pero... nuestro objetivo es **realizar análisis de datos** ⭐ **necesitamos más funciones!** ⭐ Tenemos acceso a más funciones que las básicas a partir de **paquetes** 🎁 --- <div class="my-header"></div> ## Hay muuuuchos paquetes de R - De distintas áreas del conocimiento: - Genética, - Ciencia de datos en general, - R humanitario, etc. - Podemos hacer nuestro propio paquete para nuestro flujo de trabajo <center><img src="img/aushex.png" alt="Contorno de Australia formado por stickers en forma de héxagono. Imagen correspondiente a la conferencia UseR!" height="320"></center> <p style="color: gray; font-size:15px"> Ilustración de la conferencia UseR! 2018</p> --- <div class="my-header"></div> ## Ciencia de datos Flujo de trabajo: ![](img/data-science.svg) Existe un **conjunto de paquetes** para realizar estas tareas <center><img src="img/hex-tidyverse.png" alt="Hex sticker del entorno tidyverse" height="150"></center> <p style="color: gray; font-size:13px"> Imágenes de "R para Ciencia de Datos" y Rstudio</p> --- <div class="my-header"></div> ## `tidyverse` - tidy = ordenado - ...verse = universo <center><img src="img/tidyhexall.png" alt="Algunos de los paquetes de tidyverse" height="360s"></center> <p style="color: gray; font-size:15px"> Ilustración de paquetes - RStudio</p> --- <div class="my-header"></div> ## Instalar paquetes en R Para instalar paquetes, usamos la función `install.packages()` ```r install.packages("readr") ``` instala un paquete que contiene funciones para leer datos. Usando el comando ```r library(readr) ``` Las funciones del paquete `readr` estarán disponibles. p. ej.: `read_csv` **Tu turno:** Instalar el paquete `readr` **Tu turno Bis:** Instalar `tidyverse` --- <div class="my-header"></div> ## Pedir ayuda en R Hay muchas formas de pedir ayuda en R Una opción es usar la **ayuda de R** ```r ?nombre_funcion ``` - `Description`: breve descripción de la función - `Usage` - `Arguments`: argumentos de la función - `Details` - `Value`: lo que devuelve la función - `Examples` **Tu turno:** Abre y lee la ayuda de la función `sd()`. Puede que haya cosas que aún no entiendas, pero trata de captar la idea general. ¿Qué hace esa función? ¿Qué argumentos acepta? --- <div class="my-header"></div> ## Pedir ayuda en R Otra opción es **preguntar a instructor@ o colegas** Otra, **googlear** Fórmula "óptima" (para mi) para googlear: > R + pregunta o error descriptivo y específico o, si estamos usando tidyverse > tidyverse + pregunta o error descriptivo y específico Es mejor buscar en inglés (hay más material) Algunas buenas fuentes: - [stackoverflow](https://stackoverflow.com/) (Preguntas y respuestas) - [RStudio community](https://community.rstudio.com/) (Foro) [También twitter es útil!](https://twitter.com/search?q=%23rstats&src=typeahead_click) --- <div class="my-header"></div> ## Licencia y materiales Licencia: [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/deed.es_ES). Este material está inspirado y utiliza explicaciones de: - [R para Clima](https://eliocamp.github.io/r-clima/) de Paola Corrales y Elio Campitelli - [De excel a R](https://paocorrales.github.io/deExcelaR/index.html) de Paola Corrales y Elio Campitelli - [Master the Tidyverse](https://github.com/rstudio-education/master-the-tidyverse-instructors) de Garrett Grolemund Las diapositivas fueron creadas con el paquete `xaringan`.