```{r setup, echo=FALSE, message=FALSE, warning=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library("tidyverse")
#library("viridis")
library("carData")
datos_chile <- Chile
```

#  Reportes automatizados en RMarkdown

<!-- your comment -->

## Primeros pasos 

En este documento revisaremos elementos básicos de la escritura de documentos en **RMarkdown**.

## Introducción

### Texto

La parte principal de un informe en `RMarkdown` suele ser texto. En un fichero .Rmd, todo lo que no sea encabezamiento código será interpretado como texto y lo mostrará tal cual. El texto de un documento `.Rmd` es “simplemente” texto PERO está escrito en *Markdown*. Lo que escribamos en **Rmarkdown** se mostrará tal cual en el documento final, pero es posible dar un poco de formato: negritas, cursivas, listas, enlaces de internet, etc. Para mayor detalle puedes visitar la siguiente [página web](https://www.markdownguide.org/cheat-sheet/).

### Ecuaciones 

En `Rmarkdown` se pueden introducir formulas matemáticas (escritas en `Látex`). Para formulas en linea se usa el signo `$` al inicio y al final de la expresión. Por ejemplo, el código `$y = f(x)$` produce la siguiente ecuación: $y = f(x)$.

Para escribir la misma ecuación en una linea independiente, se usa el signo `$$`. Por ejemplo, el código `$$y_{i} = \alpha + \beta_{1}x_{i} + \beta_{2}x^{2}_{i} + \epsilon_{i}$$` produce la siguiente ecuación: 

$$y_{i} = \alpha + \beta_{1}x_{i} + \beta_{2}x^{2}_{i} + \epsilon_{i}$$

$$e = m \times c^2$$ Hola clase

$\lim\limits_{x \to \infty} \exp(-x) = 0$

Para mayor detalle: [aquí](https://en.wikibooks.org/wiki/LaTeX/Mathematics)

\[ f(n) =
  \begin{cases}
    n/2       & \quad \text{if } n \text{ is even}\\
    -(n+1)/2  & \quad \text{if } n \text{ is odd}
  \end{cases}
\]



## Código ("chunks")

`RMarkdown` permite introducir código de `R` en el documento de texto, evaluar tal código y mostrar los resultados directamente en el informe. A modo de ejemplo, comenzaremos mostrando un `summary` de la base de datos `Chile`, que viene incluida en el paquete `carData`.

```{r}
mediana <- datos_chile %>% summarise(median_ingreso = quantile(income, p=0.5, na.rm = T)) %>% as.numeric() 
mediana
```

El 1988 la mediana de ingreso en Chile de `r round(mediana,0)`.

El trozo de arriba es un chunk de código `R`. Al compilar el documento, (click en el botón `knitr`, en el panel)  el código se ejecutará y mostrarán los resultados en el documento final. Los chunks pueden tienen diversas opciones que permiten una mayor flexibilidad en como se muestra el código y los resultados. Las opciones más usadas son:

- echo
- eval

Por ejemplo, el chunk abajo mostrará el código (`echo = TRUE`), lo evaluará y mostrará los resultados en el documento final (`eval = TRUE`). Así se ve:

```{r, echo = TRUE, eval = TRUE}
mediana <- datos_chile %>% summarise(median_ingreso = quantile(income, p=0.5, na.rm = T)) %>% as.numeric() 
mediana
```

Si sólo queremos mostrar el código (`echo = TRUE`) pero no evaluarlo (`eval = FALSE`), escribimos lo siguiente:

```{r, echo = TRUE, eval = FALSE}
datos_chile %>% dplyr::summarise(mean(income, na.rm = T))))))))))))))))))))))))))) 
```

Por el contrario, si queremos evaluar el código, mostrar sus resultados, pero no mostrar el código mismo, escribimos:

```{r, echo = FALSE, eval = TRUE}
datos_chile <- datos_chile %>% drop_na()
promedio <- mean(datos_chile$income, na.rm = T)
```

Como muestra nuestro análisis el promedio de ingreso es de `r round(promedio,0)`. Por último, si queremos NO mostrar el código (`echo = FALSE`), SI evaluarlo (`eval = TRUE`), PERO NO se mostrar los resultados  (`results = "hide"`), escribimos:

```{r, echo = FALSE, eval = TRUE, results = "hide"}
datos_chile <- datos_chile %>% drop_na()
promedio <- mean(datos_chile$income, na.rm = T)
print(promedio)
```

Que el código haya sido evaluado significa que el objeto "a" existirá en la memoria y podrá ser usado para posterior análisis.


## Gráficos

También podemos mostrar gráficos producidos en `R`. Notar que los paquetes necesarios para implementar un determinado análisis (`ggplot2` y `tidyverse`, en este caso) deben ser previamente cargados.

```{r, echo=FALSE, eval=TRUE, warning=F, message=F}
datos_chile %>% ggplot(aes(x=income, y=statusquo, group=vote, colour=vote)) + geom_smooth() +
  scale_color_viridis_d()
```


## Tablas 

Este reporte usa datos de la base de datos `Chile`:

```{r, echo=FALSE, eval=TRUE, message=FALSE}
datos_chile %>% summarise(across(c("income","statusquo","age"), ~ mean(.x, na.rm=T))) %>% pivot_longer(everything()) %>%
knitr::kable(type="html")
```

Mis datos son estos:

```{r, echo=FALSE, eval=TRUE, message=FALSE}
datos_chile %>% head() %>% knitr::kable(type="tex")
```
