---
title: "04 - Proporciones"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{proporciones}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```{r setup}
library(enaho)
```

Se pueden calcular proporciones sobre cualquier variable de un objeto leído con `leer.inei()`
o `leer.inei.web()`. Por ejemplo, para calcular las proporciones de la variable `"P7061"`
del primer trimestre de 2011, primero cargamos la base:

```{r}
dir <- system.file("extdata", package = "enaho") # directorio con las bases
leido <- leer.inei(modulo = 37,periodos = 2011,tipo = c("t1"),directorio = dir)
leido
```

Una vez cargada, podemos calcular las proporciones de una variable usando `proporcion.inei()`,
donde `x` será el nombre de la(s) variable(s), `base` será el objeto leído, y `pesos` será el nombre de la variable que contiene los pesos:
```{r}
proporcion.inei(x = "P7061", base = leido, pesos = "FACTRIM")
```

Como vemos, se genera una tabla con todas las categorías de la variable.



## Cálculo por estratos

Podemos calcular proporciones tomando en cuenta diversos **estratos** o grupos. Estos pueden ser cualquier variable de `base`. Por ejemplo, usando la variable `DOMINIO`:


```{r}
proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                 estratos = "DOMINIO")
```

Vemos que en 2011 hay 8 dominios (no etiquetados) y los resultados se presentan por cada uno de ellos.

Además de usar cualquier variable, también es posible calcular resultados por región y por área geográfica. 

### Cálculo por región (sólo en bases de la ENAHO)

Para hacerlo por **región**, usamos `"region"`:

```{r}
proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                 estratos = "region")
```


### Cálculo por área geográfica (sólo en bases de la ENAHO)

Para hacerlo por **área geográfica**, usamos `"area"`:

```{r}
proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                 estratos = "area")
```

En el caso del área geográfica, ésta se determina usando la variable `"ESTRATO"` de `base`. 
Esta variable suele contener 8 categorías, y las categorías 6, 7 y 8 suelen ser consideras rurales. Sin embargo, podemos cambiar esta definición con el argumento `ruralidad` cuyo valor por defecto es `6:8`:

```{r}
proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                 estratos = "area",
                 ruralidad = 7:8)
```


### Combinación de estratos

Si utilizamos más de un estrato, por defecto no serán halladas las proporciones de la combinación de ellos:

```{r}
proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                 estratos = c("area","DOMINIO"))
```

Pero es posible combinar estratos usando el argumento `combinarestratos = TRUE`:


```{r}
proporcion.inei(x = "P7061",base = leido, pesos = "FACTRIM",
                 estratos = c("area","DOMINIO"),
                 combinarestratos = TRUE)
```

## Cálculo de más de un período

Si más de un período es leído por `leer.inei()` o `leer.inei.web()` se genera una lista. Si bien esta lista se puede combinar, no siempre es posible:

```{r}
leido2 <- leer.inei(modulo = 37,periodos = c(2011,2024),tipo = c("t1"),directorio = dir,
                   combinar = TRUE)
class(leido2)
```

Sin embargo, sí es posible calcular proporciones sobre esta lista:

```{r}
proporcion.inei(x = "P7061", base = leido2, pesos = NULL)
```

Es importante notar que las etiquetas de las categorías han cambiado. Esto se debe a que 2011 y 2024 no comparten exactamente las mismas etiquetas. Para resolver este problema se remueven los espacios en blanco y se convierten a mayúsculas. Pero como se ve en el ejemplo, seguimos teniendo etiquetas que no coinciden.

Sin embargo, si creemos que las etiquetas tienen el mismo orden podemos forzarlas a que sean las mismas. Para ello, la función utilizará las etiquetas con mayor número de categorías del período más reciente:

```{r}
proporcion.inei(x = "P7061", base = leido2, pesos = NULL,
                 forzaretiquetas = TRUE)
```

Cuando introducimos los **pesos**, es posible que exista un error porque no necesariamente todos los períodos tienen el mismo nombre para los pesos:

```{r,error=TRUE}
proporcion.inei(x = "P7061", base = leido2, pesos = "FACTRIM",
                 forzaretiquetas = TRUE)
```

Esto lo podemos resolver haciendo un vector con los nombres para cada período:

```{r,error=FALSE}
proporcion.inei(x = "P7061", base = leido2, pesos = c("FACTRIM","FACTOR"),
                 forzaretiquetas = TRUE)
```

## Múltiples variables

También podemos calcular múltiples variables a la vez, con las mismas opciones mostradas, el resultado será siempre en formato largo:

```{r,error=FALSE}
proporcion.inei(x = c("P7061","P7062"), base = leido2, pesos = c("FACTRIM","FACTOR"),
                 estratos = "area", forzaretiquetas = TRUE)
```


## Opciones adicionales

Podemos imprimir los resultados de una variable en **formato largo**:
```{r}
proporcion.inei(x = "P7061", base = leido, pesos = "FACTRIM",
                 formatolargo = TRUE)
```


Podemos imprimir los resultados como **porcentaje**:
```{r}
proporcion.inei(x = "P7061", base = leido, pesos = "FACTRIM",
                 porcentaje = TRUE)
```

Podemos imprimir los resultados con un número específico de  **decimales**:
```{r}
proporcion.inei(x = "P7061", base = leido, pesos = "FACTRIM",
                 decimales = 3)
```


