Capítulo 7 Reportes con R Markdown
- En esta sección explicaré cómo usar R Markdown, si así lo deseas, puedes ver la clase que hice sobre este tema en este link.
- Su función principal es la generación de informes, documentos o presentaciones. Es una herramienta muy potente ya que permite escribir código en muchos lenguajes de programación a través de estructuras llamadas “chunks.”
- Soporta el lenguaje Markdown.
- Es posible escribir expresiones matemáticas entre signos de dólar ($ $) usando LaTeX. También acepta la opción de doble signo dólar ($ $ $ $).
7.1 La estructura YAML
- Esta entre tres guiones medios por arriba y abajo (“---”)
- Es la configuración inicial de R Markdown.
Algunos parámetros que pueden ir en la estructura YAML son:
title
: Es para especificar el título del R Markdown (no confundir con nombre del archivo con extensión.Rmd
)subtitle
: Es para especificar el subtítulo del R Markdown.author
: Acá se especifica le autor del R Markdown.date
: En este parámetro se indica la fecha en que se está escribiendo el R Markdown.output
: Este parámetro hay que especificarlo obligatoriamente, pues acá indicamos cuál es el formato del archivo de salida.
Ejemplos:
- Una estructura YAML con salida en formato html.
---
title: “Taller de Software Estadístico”
subtitle: “Módulo
3”
author: “CA FMAT & CEFMAT”
date: “17 de febrero”
output: html_document
---
Podemos usar el lenguaje html para personalizar el documento.
¡Les invitamos a que busquen el tema html que más les guste! En prettydoc y rmdformats.
- Una estructura YAML con salida en formato pdf:
---
title: “Informe coronavirus en chile”
author: “Comisión de
salud”
date: “17 de julio 2021”
output: pdf_document
---
Podemos usar todas las funciones de LaTeX en este caso, ¡Puede ser muy provechoso!
Les invitamos a encontrar más opciones de personalización acá.
7.2 Markdown
Es un lenguaje de marcado que facilita la escritura de texto a través de simples carácteres.
Resumen:
Código | Resultado |
---|---|
# Texto | Texto |
## Texto | Texto |
### Texto | Texto |
#### Texto | Texto |
_cursiva_ | cursiva |
__negrita__ | negrita |
\(\text{[Google](http://www.google.cl)}\) | |
`codigo` | codigo |
1. Texto 1 2. Texto 2 3. Texto 3 4. Texto 4 |
|
* Texto 1 * Texto 2 * Texto 3 * Texto 4 |
|
7.2.1 Tablas
- Se pueden hacer tablas rápidamente usando barras verticales (|) y guiones medios (-)
- Para entender mejor cómo crear tablas veamos el siguiente ejemplo:
Para crear la siguiente tabla:
Edad | Nacimientos | Mujeres | TFR por 1000 |
---|---|---|---|
20 | 20 | 100 | 200 |
21 | 25 | 100 | 250 |
22 | 30 | 100 | 300 |
23 | 35 | 100 | 350 |
24 | 40 | 100 | 400 |
Total | 150 | 500 | 1500 |
20-24 | 150 | 500 | 300 |
Debemos usar el siguiente código.
| Edad | Nacimientos | Mujeres | TFR por 1000 |
|-------|-------------|---------|--------------|
| 20 | 20 | 100 | 200 |
| 21 | 25 | 100 | 250 |
| 22 | 30 | 100 | 300 |
| 23 | 35 | 100 | 350 |
| 24 | 40 | 100 | 400 |
| Total | 150 | 500 | 1500 | | 20-24 | 150 | 500 | 300 |
7.3 Chunks
- La siguiente estructura es un “chunk” de R.
```{r}
```
- Dentro podemos escribir código en en lenguaje que especifiquemos en la llave {}.
Esto es un chunk con código de Python:
```{python}
for i in range(3):
\(\ \ \ \ \) print(i)
```
- Podemos nombrar un chunk para trabajar con más orden:
```{r IMPORTAR DATOS}
data <- rio::import(“datos.csv”)
```
7.3.1 Parámetros de un chunk
Dentro de las llaves pueden ir los siguientes parámetros:
echo
: Cuando el argumento es FALSE, muestra el output pero no el código.include
: Cuando es FALSE, no muestra ni el código ni el output.result
: Cuando es FALSE, muestra el código pero no el resultado.message
: Cuando es FALSE, no muestra mensajes provocados por la ejecución del código.warning
: Cuando es FALSE, no muestra advertencias provocadas por el código.fig.align
: Puede recibir como argumentos a “center,” “right” y “left.”
Pueden ver más opciones en este enlace.
Ejemplo:
```{r GRAFICO 1, echo=FALSE, fig.align = “center”}
ggplot(iris) +
\(\ \ \ \ \) aes(Sepal.Length, Petal.Length) +
\(\ \ \ \ \) geom_point(color = “brown4”)
```
Mostrará en el output un gráfico centrado, pero no el código que lo produce.
7.3.2 El chunk “setup”
Al crear un archivo R Markdown, se creará un chunk por defecto, abajo de la estructura YAML, llamado “setup” y tendrá como parámetro
include=FALSE
.Es muy importante, ya que incluye las configuraciones iniciales de los chunks.
Dentro de la función
knitr::opts_chunk$set
, podemos escribir nuevos parámetros que se aplicarán a TODOS los chunks.
Ejemplo:
``` {r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
message = FALSE, warning = FALSE, fig.align = “center”)
```
Además, podemos agregar los packages que usaremos durante la utilización de R Markdown:
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
message = FALSE, warning = FALSE, fig.align = “center,” comment = NA)
# Packages
require(tidyverse)
require(DT)
```
7.3.3 Chunks inline
- Son bastante útiles, nos permite usar un lenguaje de programación mientras escribimos.
- Su uso se debe hacer mediante acentos graves (` `)
- Debemos especificar el lenguaje que usaremos antes de usar código.
Ejemplo:
La media entre los números 2, 4 y 12 es ` r mean(c(2, 4, 12)) `.
Producirá:
La media entre los números 2, 4 y 12 es 6.
- Podemos llamar variables creadas anteriormente en el código. Ejemplo:
<- iris$Sepal.Length %>% mean media_Petal.Length
La media del largo de los pétalos de iris es ` r media_Petal.Length `.
La media del largo de los pétalos de iris es
5.8433.
7.4 Tablas desde R
- En html, la mejor opción es usar la función
reactable
del package `reactable``, ya que es una opción interactiva.
Ejemplo:
<- iris %>%
grupos_iris group_by(Species) %>%
summarize(max_Sepal.Length = max(Sepal.Length))
# require(DT)
%>%
grupos_iris ::reactable() reactable
- En formatos pdf, la mejor opción es usar la función
kable
del packageknitr
.
Ejemplo
# require(knitr)
%>%
grupos_iris ::kable() knitr
Species | max_Sepal.Length |
---|---|
setosa | 5.8 |
versicolor | 7.0 |
virginica | 7.9 |
Les invitamos a aprender más sobre tablas en el siguiente link.
7.5 Imágenes
Podemos cargar imágenes usando la función include_graphics
del package
knitr
.
::include_graphics(here::here("images", "ejemplo.jpg")) knitr
7.6 Reportes automáticos
- Se puede crear un “template,” e ir cambiando el argumento
params
. params
es un parámetro de la estructura YAML.- Muy útil para la generación de reportes automáticos.
Ejemplo:
---
title: “Taller de Software Estadístico”
subtitle: “Módulo
3”
author: “CA FMAT & CEFMAT”
date: “17 de febrero”
output: html_document
params:
\(\ \ \)especie: “setosa”
---
Creemos un histograma para la variable Sepal.Length
, para la especie
“setosa” de iris.
require(magrittr)
require(dplyr)
require(ggplot2)
<- iris %>%
iris_especie_Sepal.Length filter(Species == params$especie)
<- ggplot(iris_especie_Sepal.Length) +
grafico_especie aes(x = Sepal.Length) +
geom_histogram(color = "dodgerblue3", fill = "dodgerblue4", alpha = 0.7) +
labs(x = "Sepal Length", y = "Frecuencia",
title = paste("Histograma de Sepal Lenth para la especie", params$especie, sep = " ")) +
theme_bw()
%>%
grafico_especie ::ggplotly() plotly
7.7 Actividad
Genere un reporte automático en R Markdown (formato html) que describa la situación en enero de 2021 respecto al coronavirus en Argentina, Chile y Perú. ¡Use toda su imaginación!