class: center, middle, inverse, title-slide # R Markdown ## Programación para el análisis de datos ### Departamento de Ciencias Sociales, UCU - Martín Opertti --- class: inverse, center, middle # Introducción --- ## Introducción a R Markdown - R Markdown permite crear documentos combinando texto, código y sus resultados. Los documentos de R Mardown tienen extensión `.Rmd` y admiten muchos formatos de salida como archivos PDF, word, HTML o diapositivas. - Los reportes creados con R Markdown pueden usarse como procesador de texto sin necesidad de incluir código (ej. escribir artículos) o incluir texto y código para mostrar también el proceso detrás de los resultados. - R Markdown integra un cojunto de paquetes y herramientas externas. Necesita el paquete rmarkdown pero RStudio lo descarga de forma automática así que no es necesario instalar. - [R Markdown Cheatsheets](https://rmarkdown.rstudio.com/) --- ## ¿Por qué usar R Markdown? - Es libre y gratuito - Es compatible con varios lenguajes de progrmación - Muchos formatos de salida - Facilita la investigación reproducible y la divulgación del conocimiento --- ## Formatos de salida - [Formato PDF](https://github.com/svmiller/svm-r-markdown-templates/blob/master/article-example/svm-rmarkdown-article-example.pdf) - [Formato HTML personalizado](https://umad-fcs.github.io/Piso-I-OP/) - [Formato HTML personalizado](https://dipaola-results.verasight.io/) - Esta misma presentación (con el paquete [xaringan](https://bookdown.org/yihui/rmarkdown/xaringan.html)) --- ## ¿Cómo se ve un archivo .Rmd? .center[ <img src="ima/ima_1.png" width="1000px" /> ] --- ## Resultado (output) .center[ <img src="ima/ima_2.png" width="600px" /> ] --- ## .Rmd y output .center[ <img src="ima/ima_9.png" width="1000px" /> ] --- class: inverse, center, middle # ¿Cómo crear un archivo .Rmd? --- ## ¿Cómo crear un archivo .Rmd? - Para crear un archivo de R Markdown seleccionamos `File/New File/R Markdown` - Luego ingresamos nombre, autor y formato de salida (aunque podemos modificarlo luego en el código) .center[ <img src="ima/ima_3.png" width="400px" /> ] --- ## Compilar Cuando queremos ver el resultado de nuestro archivo .Rmd tenemos que compilarlo (render). Para ello arriba del script veremos un botón que dice `Knit` y luego seleccionamos `knit`. Esto generará otro documento con el formato de salida seleccionado. También podemos hacerlo con (`ctrl + shift + k`) --- ## YAML header En la parte de arriba de coumento se encuentra el YAML donde definimos el título, autor, la fecha, formato de salida entre otros argumentos, demarcado encima y debajo por `---` A modo de ejemplo, si queremos exportar un documento en formato HTML, podemos incluir un TOC (table of contents) para ordenar el documento. También podemos elegir un [tema](https://www.datadreaming.org/post/r-markdown-theme-gallery/). Para ello, simplemente incluimos lo siguiente: .center[ <img src="ima/ima_4.png" width="400px" /> ] --- ## Títulos .pull-left[ <img src="ima/ima_5.png" width="400px" /> ] .pull-right[ <img src="ima/ima_6.png" width="400px" /> ] --- ## Formato Con asteriscos podemos poner texto en negrita y también armar listas .pull-left[ <img src="ima/ima_7.png" width="300px" /> ] .pull-right[ <img src="ima/ima_8.png" width="400px" /> ] --- ## Fragmentos de código - Para insertar un fragmento de código (code chunk) podemos `Ctrl + Alt + I` - Dentro de el podemos escribir código (que se visualizará de forma distinta en el reporte). Podemos correr el código localmente en el archivo `.Rmd` o que se corra al compilar - En la primer línea del fragmento de código podemos definir argumentos. Por ejemplo si incluímos `echo = FALSE`, el código no aparecerá pero si el resultado, o si definimos `results = "hide"` veremos el código pero no el resultado. Con `message = FALSE` suprimen los mensajes en la consola (recomendado) y con `eval = FALSE` aparecerá el código (si `echo = TRUE`) pero no será evaluado por R. - Se ven de esta forma: .center[ <img src="ima/ima_10.png" width="800px" /> ] --- ## Tablas e imagenes - Hay muchas formas de incluir tablas en un documento de R Markdown. Una de ellas es `knitr::kable()`. Pueden ver más detalles [aquí](https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html) - Para incluir imágenes pueden utilizar `knitr::include_graphics()`. - Para ambos casos hay un ejemplo en el template --- class: inverse, center, middle # Trabajo final --- ## Pauta Escribir un informe (con R Markdown) que integre código y texto detallando algún procesamiento, análisis o recolección de datos -en su acepción más amplia- que no haya sido visto en el curso. El objetivo es que busquen tutoriales, artículos o libros de análisis de datos en R que no hayan sido vistos en el curso, y que lo apliquen a datos que les interesen. Tienen que describir en qué consiste el análisis, procesamiento o recolección de datos pero lo central es que expliquen cómo funciona el código. El trabajo debe: - Describir el tipo de análisis, procesamiento o recolección de forma conceptual. - Describir uso y argumentos de las funciones utilizadas. - Aplicar las funciones a datos que no sean los mismos que usan los recursos que toman como fuente. - Citar todos los recursos utilizados tanto para código como para la descripción conceptual. - Realizar un procesamiento de los datos a utilizar aplicando lo aprendido en el curso --- ## Formalidades - Fecha de entrega y presentación: 29 de noviembre - Se entrega una carpeta con los siguientes elementos: - Proyecto de R - Archivo de R Markdown (.Rmd) - Archivo de salida de R Markdown (HTML o PDF, 2 a 5 carillas) - Script con procesamiento de los datos a utilizar - Data (si aplica) - Grupos de a 2 o individual - Taller para consultas 24 de noviembre --- ## Criterio de evaluación - El trabajo final es el 40% de la nota del curso - La calificación es sobre 12: - 2 puntos por cumplir con todos los elementos requeridos y usarlos de forma correcta - 2 puntos por usar de forma adecuada el R Markdown (integrar texto, código, imagenes, tablas, etc.) - 2 puntos por crear un script para procesar los datos utilizando lo visto en el curso (con anotaciones sobre por qué estamos haciendo esas transformaciones) - 6 puntos por la descripción y aplicación de las funciones o paquetes que no vimos en el curso. --- ## Ideas - Visualizaciones de datos - Gráficos de densidad - Mapas y mapas de calor - Gráficos animados - Utilizar datos de encuesta en R - Tablas ponderadas - Manejar etiquetas - Crear ponderadores - Anáisis de texto - Palabras más frecuentes en data de texto - Análisis de sentimiento - Conectarse con APIs para extraer datos - Google perspectives - Twitter - Banco Mundial - Our World in Data - Webscrapping - Estadística avanazada - Modelos específicos - Machine Learning - Paquetes para manejar variables de cadenas, fechas, etc. --- ## Datos - [Kaggle](https://www.kaggle.com/) - [LAPOP](https://www.vanderbilt.edu/lapop/) - [Latinobarómetro](https://www.latinobarometro.org/lat.jsp) - [Encuesta Mundial de Valores](https://www.worldvaluessurvey.org/wvs.jsp) - [Banco Mundial](https://datos.bancomundial.org/) - [Our World in Data](https://ourworldindata.org/) - [Otras](https://github.com/awesomedata/awesome-public-datasets)