class: center, middle, titular background-size: contain <img src="img/see.png" width="250px"/> # Sección 8: Comunicando Resultados con R ## **PROGRAMA INTERNACIONAL DE ESTADÍSTICA APLICADA A LA INVESTIGACIÓN CIENTÍFICA** #### MÓDULO: SOFTWARES PARA EL MANEJO DE DATOS <br> <br> Linda Cabrera Orellana #### Marzo, 2023 --- class: middle, center, inverse <img src="img/rmarkdown.png" width="150px"> # `rmarkdown` --- #
Instalación de `rmarkdown` Aquí aprenderemos sobre el paquete `rmarkdown`, el cual es una herramienta para integrar texto, código y resultados. Puedes usarlo en modo notebook, es decir, en un entorno interactivo de ejecución de código para la comunicación de resultados de estudios o análisis científicos y para divulgación científica. Con `rmarkdown` se pueden obtener una gran variedad de salidas que puedes generar usando la librería, incluyendo dashboards (tableros de control), sitios web, y libros. Para que `rmarkdown` funcione debes tener instalados los siguientes paquetes: ```r install.packages("tinytex", dependencies = TRUE) install.packages("knitr", dependencies = TRUE) install.packages('rmarkdown') # para instalar LaTeX para reportes PDF tinytex::install_tinytex () ``` <br> .footnote[[https://www.rstudio.com/resources/cheatsheets/](https://www.rstudio.com/resources/cheatsheets/)] --- #
Primeros pasos .pull-left[ Para crear un archivo Rmarkdown debes ir a `File -> New File -> Rmarkdown...`, aquí te aparecerá una ventana donde deberás indicar el nombre del archivo que deseas crear y por el momento elegiremos `html`, y creamos con OK. Contiene tres tipos importantes de contenido: 1. Un encabezado YAML rodeado de `---` 2. Bloques de código de R rodeados de ` ``` ` 3. Texto mezclado con formateos de texto simple como **negritas** e _itálicas_. ] .pull-right[ <img src="img/creaRmark.png" width="100%" style="display: block; margin: auto;" /> ] --- #
Primeros pasos <img src="img/primerRmarkd.png" width="100%" style="display: block; margin: auto;" /> --- #
Encabezado YAML **YAML** es la sigla en inglés de la frase *“yet another markup language”*, que significa *“otro lenguaje de marcado más”*. Este lenguaje de marcado está diseñado para representar datos jerárquicos de modo tal que sea fácil de escribir y leer para humanos. R Markdown lo utiliza para controlar muchos detalles del output. Este encabezado determina los parámetros generales de formato para el documento a compilar. En lenguaje computacional se entiende como los metadatos del documento; esto es, información que define el formato del archivo resultante, más no su contenido: - **Título (title).** Texto entre comillas que servirá de título general del documento. - **Subtítulo (subtitle).** Texto entre comillas que servirá de subtítulo general del documento. - **Autor (author).** Texto entre comillas para indicar el nombre del o los autores. - **Resumen (abstract).** Texto entre comillas para indicar el resumen del documento. - **Fecha (date).** Campo para indicar la fecha. En el texto, con la expresión *today*, se solicita que imprima la fecha actual según el calendario del sistema operativo. - **Bibliografía (bibliography).** Indicar al documento que contienen las referencias en formato BiBTeX. --- #
Encabezado YAML - **Formato de bibliografía (csl).** Nombre de un archivo de extensión .csl para indicar el formato de referencias en el cuerpo del texto y el listado de bibliografía al final del documento. - **Formato de salida (output).** Documento de salida. Los argumentos dentro del apartado resultado (`output`) son los siguientes: - **pdf_document:** indica el formato preestablecido para compilar el documento. En este caso, se trata de un PDF. Puede ser *html_document* o *word_document*. - **number_sections:** si está definido como yes define que se numerarán los títulos y sutítulos a lo largo del documento, de manera automática y correlativa. - **toc:** es la abreviación de table of contents. - **toc_float:** indica si desea un índice flotante. - **theme:** Otra característica que puede ser modificada consiste en el tema o tipo de plantilla visual en que se muestra el contenido. Entre las opciones disponibles de “temas”, se encuentran los siguientes valores: cerulean, journal, flatly, readable, spacelab, united y cosmo. En la página de [Andrew Zieffler](https://rpubs.com/gustavomtzv/874870) se puede dar un vistazo a los temas. --- #
Encabezado YAML ## Opciones LaTeX Muchos aspectos de la plantilla LaTeX utilizada para crear documentos PDF se pueden personalizar utilizando metadatos YAML de nivel superior (tenga en cuenta que estas opciones no aparecen debajo de la sección de salida, sino que aparecen en el nivel superior junto con el título, el autor, etc.) . Por ejemplo: * **fontsize:** Tamaña de la fuente (10pt, 11pt, or 12pt). * **documentclass:** Clases de documentos de LaTeX (article, book, etc.) * **linkcolor, urlcolor, citecolor:** Colores para links externos, internos y citas. Puedes ver todas las opciones para personalizar la salida LaTex (pdf) en [https://www.rstudio.com/wp-content/uploads/2015/03/rmarkdown-reference.pdf](https://www.rstudio.com/wp-content/uploads/2015/03/rmarkdown-reference.pdf). --- #
Encabezado YAML ### Ejercicio 5.1 1. En esta primera parte vamos a crear el siguiente [documento](https://rpubs.com/lindajazmin1987/practica-capitulo5) `.html` publicable. Crear un archivo R Markdown vacío con el nombre "resumen_modulo". Note que cuando crea el archivo la extensión de este archivo es `.Rmd`. 2. Crea el encabezado YAML con los siguientes datos. ```r --- title: "Resumen de R para el Manejo de Datos" subtitle: "Programa Internacional de Estadística Aplicada a la Investigación Científica" author: "Linda Cabrera" date: "2023-03-27" output: html_document: toc: TRUE # incluye o no el indice toc_float: TRUE # incluye o no indice flotante theme: "flatly" # especifica el tema Bootstrap highlight: textmate # resaltado de sintaxis number_sections: TRUE # enumerar las secciones --- ``` --- #
Formateo de texto Existe una hoja de referencia útil que la obtienes en la ruta `Help > Markdown Quick Reference`. Esta hoja brinda un guía completa del formato que podemos utilizar para los textos con `rmarkdown`. ## Encabezados o Títulos Para escribir un encabezado o título en un documento debes hacerlo con el signo numeral ` \# ` de la siguiente manera: ```r # Título 1 ## Subtítulo 1.1 ## Subtítulo 1.2 ### Subsubtítulo 1.2.1 # Título 2 # Título 3 ``` Para el título principal utiliza un signo numeral, para subtítulos utiliza dos signos numerales seguidos, y así sucesivamente. --- #
Formateo de texto ## Listas Podemos crear listas ordenadas y no ordenadas. Listas ordenadas: ```r 1. Item 1 2. Item 2 1. Item 2a 2. Item 2b ``` Listas no ordenadas: ```r - Item 1 - Item 2 + Item 2a + Item 2b ``` --- #
Formateo de texto ## Citas Para escribir citas puedes utilizar el paquete `tufte` y escribir la cita de la siguiente manera: ```r > "Un simple gráfico ha brindado más información a la mente del analista de datos que cualquier otro dispositivo." > `r tufte::quote_footer('--- John Tukey')` ``` Luego tendrás este estilo de cita: > "Un simple gráfico ha brindado más información a la mente del analista de datos que cualquier otro dispositivo." > <footer>--- John Tukey</footer> --- #
Formateo de texto ## Links Para incluir un link que al hacer clic te direccione a una dirección http, debes escribir el texto entre corchetes y seguido el link entre paréntesis. ```r [link de Rstudio](https://www.rstudio.com/) ``` ### Ejercicio 5.2 ```r ## Links Para iniciar la clase de Introducción a RStudio: 1. Descargamos RStudio en el siguiente [link](https://www.rstudio.com/products/rstudio/download/) 2. Instalamos RStudio en nuestras computadoras ``` --- #
Formateo de texto ## Expresiones Matemáticas Expresión matemática encerrada en un signo de dólar, la escribe en la misma línea `$x^2+5$` y queda así `\(x^2+5\)`, mientras si está encerrada en dos signos de dólar, la escribe en la siguiente línea y centrada: `$$x^2+5$$` Puedes encontrar más fórmulas en el siguiente [link1](http://metodos.fam.cie.uva.es/~latex/apuntes/apuntes3.pdf) y [link2](https://aprender-uib.github.io/AprendeR2/extras-de-r-markdown.html#f%C3%B3rmulas-matem%C3%A1ticas). ### Ejercicio 5.3 ```r - En R podemos calcular: $$\sqrt{23^3+10}-\dfrac{2}{3}+ \ln(1) - e^3$$ ``` - En R podemos calcular: `$$\sqrt{23^3+10}-\dfrac{2}{3}+ \ln(1) - e^3$$` --- #
Formateo de texto ## Énfasis Puedes hacer las cosas en **negrita** usando dos asteriscos, como esto: `**negrita**`, hacer cosas en *cursiva* usando guiones bajos, como esto: `_italicas_` o escribir ~~tachado~~, como esto: `~~tachado~~`. También puedes escribir código en línea utilizando las comillas ` `` `. ## Imágenes Puedes incluir un archivo de imagen usando este código: ``, entre paréntesis debes indicar la dirección de la imagen. Por ejemplo: ```r  ```  --- #
Formateo de texto ## Incluir bibliografía Para que la bibliografía conecte, deberás crear un archivo tipo BibTeX Database (.bib) donde especificarás los datos del o de los artículo/s o libro/s. En el encabezado YAML del documento debes agregar las opciones `bibliography: nombre_archivo.bib` donde debes especificar el nombre del archivo .bib que debe estar en el mismo directorio que estás trabajando y `csl: apa.csl` donde especificas el formato de la bibliografía, en este caso he utilizado el formato apa, puedes encontrar más estilos de bibliografía en [https://github.com/citation-style-language/styles](https://github.com/citation-style-language/styles). ### Ejercicio 5.4 ```r ## Incluir Bibliografía Este curso nos da una introducción práctica a la manipulación de datos y a las herramientas que provee el entorno `tidyverse`, puedes leer más en _R para Ciencia de Datos_ de @hadley2021. Si deseas aprender más acerca de la teoría subyacente, puede que te guste el artículo Tidy Data de @JSSv059i10 publicado en la revista [Journal of Statistical Software](http://www.jstatsoft.org/v59/i10/paper). ``` --- #
Fragmentos de código R **Markdown** es interesante y útil, pero el poder real proviene de la mezcla entre **markdown** y fragmentos (chunks) de código **R**. Cuando se compila el documento, el código **R** se ejecutará; si producen figuras, las figuras se insertarán en el documento final. Los chunks del código principal se ven así: <pre> ```{r load_data, echo = TRUE} gapminder <- read.csv("~/Desktop/gapminder.csv") ``` </pre> Es decir, coloca un fragmento de código **R** entre comillas <code>```{r chunk_name, option1 = ..., ...}</code> y <code>```</code>. Es una buena idea darle a cada fragmento un nombre, ya que te ayudarán a corregir los errores y se recomienda que los nombres de archivo estén basados en el nombre del fragmento de código que los produjo. Adicionalmente, se pueden incluir opciones al chunk que van a configurar los resultados que queremos obtener. --- #
Fragmentos de código R Hay una variedad de opciones quen afectan la forma en que los chunks de código son tratados: - `echo=TRUE` o `echo=FALSE` muestra el código o no, respectivamente. - `results="hide"` evita que se impriman los resultados. - `eval=TRUE` o `eval=FALSE` evalúa o no el código, respectivamente. Cuando se evalúan los resultados, también se muestran. - `warning=FALSE` y `message=FALSE` oculta cualquier advertencia o mensajes producidos en la ejecución del código. A menudo habrá opciones particulares que querrás usar repetidamente; para esto, luego de definr el encabezado YAML puede establecer las opciones de chunks _global_, de esta forma: <pre> ```{r global_options, echo=FALSE} knitr::opts_chunk$set(fig.path="img/", message=FALSE, warning=FALSE, echo=FALSE, results="hide", fig.width=11) ``` </pre> Es recomendable que en este chunck de configuración cargue los paquetes y los archivos que usará en el documento. La opción `fig.path` define dónde se guardarán las figuras. El `/` aquí es realmente importante; sin él, las figuras se guardarían en el lugar estándar, pero solo con los nombres que están con `Figs`. --- #
Fragmentos de código R ### Ejercicio 5.5 **Código NO se ve, SI se evalúa, NO se muestran resultados:** Incluye este chunk al inicio del texto, luego del encabezado YAML, con los siguientes argumentos <code>{r configuracion, echo=FALSE, eval=TRUE, include=FALSE}</code>: ```r library(knitr) library(tidyverse) library(readxl) # configurar opciones por default opts_chunk$set(echo=FALSE, warning=FALSE, message=FALSE) ``` **Código SI se ve, SI se evalúa:** Incluye este chunk al final con los siguientes argumentos <code>{r leer_datos, echo=TRUE, eval=TRUE}</code>: ```r ## cargamos el conjunto de datos profesores2 profesores <- read_excel("data/EXCELprofesores2.xlsx") ``` --- #
Fragmentos de código R ### Ejercicio 5.5 **Código NO se ve, SI se evalúa:** Incluye este chunk con los siguientes argumentos <code>{r indicadores, echo=FALSE, eval=TRUE}</code>: ```r profesores %>% group_by(nivel) %>% summarise(Profesores = n(), Estudiantes = sum(alumnos), 'Tiempo docencia Promedio' = round(mean(tiempo)), 'Edad Promedio' = round(mean(edad)))%>% rename("Nivel que imparte docencia"=nivel) ``` **Código SI se ve, NO se evalúa:** Incluye el mismo chunk anterior pero con los siguientes argumentos <code>{r indicadores2, echo=TRUE, eval=FALSE}</code>: El paquete `knitr` provee casi 60 opciones que puedes usar para personalizar tus bloques de código. Puedes ver la lista completa en [Opciones de bloques](http://yihui.name/knitr/options/). --- #
Tablas Podemos incluir tablas de dos formas: creándolas o haciendo consultas de la data. 1. Para crear una tabla, podemos formarla como sigue: ```r | Derecha | Izquierda | Default | Centro | |--------:|:----------|---------|:------:| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | ``` | Derecha | Izquierda | Default | Centro | |--------:|:----------|---------|:------:| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | 2. Existen paquetes que convierten las consultas de datos en formatos de tablas, uno de esos es el paquete `knitr`. Si desea darle un formato diferente a las tablas, puede ampliar la información de los paquetes [Package kable y kableExtra](https://rpubs.com/JeisonAlarcon/Tables-R). En el siguiente link de [Pedro J. Pérez](https://perezp44.github.io/intro-ds-20-21-web/tutoriales/tt_08_tablas-Rmarkdown.html) de la Universidad de Valencia encontrarás información sobre otros paquetes para hacer Tablas en Rmarkdown. --- #
Tablas En este caso usaremos el paquete `knitr` con la función `kable()` para generar una tabla con mejor formato: ```r kable( profesores %>% group_by(nivel) %>% summarise(Profesores = n(), Estudiantes = sum(alumnos), 'Tiempo docencia Promedio' = round(mean(tiempo)), 'Edad Promedio' = round(mean(edad)))%>% rename("Nivel que imparte docencia"=nivel), caption = "Tabla 1. Indicadores según la encuesta XYZ" ) ``` <table> <caption>Tabla 1. Indicadores según la encuesta XYZ</caption> <thead> <tr> <th style="text-align:left;"> Nivel que imparte docencia </th> <th style="text-align:right;"> Profesores </th> <th style="text-align:right;"> Estudiantes </th> <th style="text-align:right;"> Tiempo docencia Promedio </th> <th style="text-align:right;"> Edad Promedio </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> BASICO </td> <td style="text-align:right;"> 98 </td> <td style="text-align:right;"> 3148 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 36 </td> </tr> <tr> <td style="text-align:left;"> INTERMEDIO </td> <td style="text-align:right;"> 42 </td> <td style="text-align:right;"> 1398 </td> <td style="text-align:right;"> 11 </td> <td style="text-align:right;"> 42 </td> </tr> <tr> <td style="text-align:left;"> SUPERIOR </td> <td style="text-align:right;"> 35 </td> <td style="text-align:right;"> 1138 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 36 </td> </tr> </tbody> </table> --- #
Gráficos Una de las mejores cosas que puede hacer en `rmarkdown` es incluir el código de sus gráficos y que se generen directamente en R. Intenta agregando el último gráfico del capítulo anterior. .pull-left[ ```r library(ggthemes) # visualizar a los profesores que más ganan por nivel mas_ganan <- profesores %>% group_by(nivel) %>% filter(row_number(desc(salario))==1) ## gráfico de dispersión profesores %>% ggplot(aes(x = edad, y = tiempo, size = salario, color = sexo)) + geom_point(alpha = 0.5) + geom_text(data = mas_ganan, aes(label = paste("Codigo: ", cod, "- Salario: $", salario)), size = 3, nudge_x = -3, color = "black") + geom_point(data = mas_ganan, shape = 21, color = "black", stroke = 1.2) + scale_size(breaks = floor(seq(500, 4500, length.out = 5)), limits = c(200, 4700), range = c(2, 10)) + scale_color_manual(values = paleta_simpson) + labs(x = "Edad del Profesor", y = "Tiempo de Docencia", title = "Edad vs Tiempo de docencia de los Profesores", subtitle = "Gráfico de Dispersión", color = "Sexo del Profesor", size = "Salario del Profesor") + theme_pander() + theme(legend.position = "bottom", legend.box = "vertical") ``` ] .pull-right[ <!-- --> ] --- class: middle, center, inverse
# Más formatos `rmarkdown` --- # Tipos de formatos En el siguiente link puede encontrar varios formatos para todas las clases de documentos que genera `rmarkdown` [Formatos de R Markdown](https://rmarkdown.rstudio.com/formats.html). - **Salida `.html`:** La salida para este reporte es `output: html_document`. Los documentos pueden ser publicados en RPubs, GitHub, en un sitio web personal o Google drive. Debes crear una cuenta en RPubs [https://rpubs.com/users/new](https://rpubs.com/users/new). Haremos una prueba en RPubs con el documento 'practica1_Rmarkdown.Rmd'. - **Salida `.docx`:** Para que se genere una salida de un archivo con extensión `.docx` el output en el encabezado YAML es `output: word_document`. Haremos una prueba en RPubs con el documento 'practica2_WORD.Rmd'. - **Salida `.pdf`:** La salida para este documento es `output: pdf_document`. Haremos una prueba en RPubs con el documento 'practica3_PDF.Rmd'. --- # Presentaciones, Libros y más... - **LaTeX Beamer:** Salida por default es: `output: beamer_presentation:`. Probemos cargando el archivo 'prueba_beamer.Rmd'. Puedes encontrar más temas en [beamer-theme-matrix](https://hartwork.org/beamer-theme-matrix/). - **Power Point:** Salida por default es: `output: powerpoint_presentation`. Probemos creando un archivo de nombre 'prueba_PPT.Rmd'. - **Paquete `xaringan`:** nuevos estilos de presentaciones. - **Paquete `bookdown`:** facilita la escritura de libros y artículos/informes de formato largo con R Markdown. Revisar [bookdown: Authoring Books and Technical Documents with R Markdown](https://bookdown.org/yihui/bookdown/). Obtener la plantillas en [github.bookdown](https://github.com/rstudio/bookdown). - **Paquete `pagedown`:** plantillas de hojas de vida, tesis, artículo de la Journal of Statistical Software, entre otros. - **Paquete `vitae`:** plantillas de hojas de vida. --- class: middle, center, inverse
# GitHub y RStudio --- #
Conectar RStudio y GitHub Git es un sistema de control de versiones que le permite realizar un seguimiento de quién realizó cambios y cuándo, y tiene opciones para actualizar fácilmente una versión compartida o pública de su código en github.com. ## Para conectar con GitHub y RStudio 1. Crear una cuenta en [GitHub](https://github.com/). 2. Crear un token personal, las instrucciones se encuentran en [https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) 3. Descargar e instalar Git, los pasos a seguir están en [https://carpentries.github.io/workshop-template/#shell](https://carpentries.github.io/workshop-template/#shell). --- #
Conectar RStudio y GitHub ## Para conectar con GitHub y RStudio * Luego ir a `Tools` y escoger la opción `Global Options...`, buscamos la pestaña `Git/SVN` y debemos asegurarnos de tener la dirección del ejecutable de Git. * En caso de no conocer la ubicación del ejecutable de Git, podemos averiguarlo desde la Terminal con `$ which git.exe`. * Puedo crear un nuevo proyecto o elegir uno existente, y luego automáticamente en el panel de environment aparecerá una pestaña que dice `Git` y un botón en la barra de herramientas que indica `Git`. * Ver más en [https://swcarpentry.github.io/git-novice-es/14-supplemental-rstudio/index.html](https://swcarpentry.github.io/git-novice-es/14-supplemental-rstudio/index.html). --- #
Algunos sitios de interés - [knitr in a knutshell](https://kbroman.org/knitr_knutshell/) - [R Markdown documentation](https://rmarkdown.rstudio.com/) - [Escribir un Trabajo Fin de Estudios con R Markdown](http://destio.us.es/calvo/memoriatfe/MemoriaTFE_PedroLuque_2017Nov_imprimir2caras.pdf) - [“Utilizando LaTeX en RStudio](http://umh1480.edu.umh.es/wp-content/uploads/sites/44/2013/02/teim_sesion_001_latex_en_RStudio_16_17.pdf) - [Chunk options and package options](https://yihui.org/knitr/options/) - [R Markdown: The Definitive Guide](https://bookdown.org/yihui/rmarkdown/) --- class: middle, center, inverse <br> <br> # **¡FIN!** ## Comunicando resultados con R ### Síguenos .pull-left[ .center[ ### [@socecuest
](https://www.facebook.com/socecuest) ### [@see_estadistica
](https://www.instagram.com/see_estadistica/) ]] .pull-right[ .center[ ### [@see_estadistica
](https://twitter.com/see_estadistica) ### [@sosecuest
](https://t.me/sosecuest) ]]