1. Presentación

En esta sesión exploraremos las herramientas provistas por las libreríaas que pertenecen al mundo de tidyverse en Rstudio. Para ello, trabajaremos con el set de datos del Latinobarómetro del año 2023. A continuación te presento en los sigueintes pasos como cargar todos los instrumentos de trabajo que utilizaremos hoy.

1.1 Objetivo de la sesión

A partir del Latinobarómetro del año 2023, conoceremos las princiaples funciones del ecosistema tidyverse orientadas a la manipulacion de datos . En el Latinobarómetro los países de la base de datos poseen códigos específicos. Esta no es una clase de preprocesamiento. En tal sentido, te presentaré de la siguiente manera los códigos y el país asociado a este..

País Código
1 Argentina 32
2 Bolivia 68
3 Brasil 76
4 Chile 152
5 Colombia 170
6 Costa Rica 188
7 República Dominicana 214
8 Ecuador 218
9 El Salvador 222
10 Guatemala 320
11 Honduras 340
12 México 484
13 Nicaragua 558
14 Panamá 591
# A veces en Rstudio no sabemos las librerias que están instaladas. 
# Con el paquete pacman, aquellas que no lo estén se instalarán
# install.packages("pacman")
pacman::p_load(VIM, skimr, tidyverse, lubridate, ggplot2, mice, sjmisc, car, sjlabelled, stargazer, rio)
data=import("Latinobarometro_2023.rdata")
atrib_sum <- sapply (data, attributes)
data[data < 0 ] <- NA

2. ¿Qué es el ecosistema Tidyverse?

‘Tidyverse’ es una colección de paquetes de R diseñada para ciencia de datos que comparten una filosofía de diseño común y son interoperables, facilitando el análisis y manipulación de datos. Está desarrollado por Hadley Wickham y su equipo en RStudio. Los paquetes dentro del tidyverse están diseñados para trabajar juntos de manera coherente y eficiente.Puedes ver mas en detalle lo que te estoy contando aqui: https://www.tidyverse.org/

Texto alternativo

A continuación te presento las principales librerías del paquete tidyverse.

Package Objetivo
ggplot2 Creación de gráficos avanzados y personalizables utilizando una gramática de gráficos coherente.
dplyr Manipulación de datos con funciones para filtrar, seleccionar, transformar y resumir conjuntos de datos.
tidyr Reestructuración de datos para facilitar el análisis, incluyendo pivotar y “despivotar” datos.
readr Lectura y escritura eficiente de datos rectangulares como CSV y texto delimitado.
purrr Programación funcional con listas, incluyendo mapas y funciones de iteración.
tibble Creación de data frames modernos que proporciona una impresión más legible y un mejor manejo de datos.
stringr Manipulación y manejo de texto con operaciones sobre cadenas de caracteres.
forcats Herramientas para trabajar con datos categóricos, que incluyen factores en R.
lubridate Facilita el trabajo con fechas y horas, proporcionando funciones para interpretar y manipular fechas.
haven Importación y exportación de datos con formatos de software estadístico como SPSS, SAS y Stata.
readxl Lectura de datos de hojas de cálculo Excel.
modelr Facilita la modelación dentro de un flujo de trabajo del tidyverse.
broom Convierte modelos estadísticos en data frames ordenados para facilitar el trabajo posterior.
dbplyr Proporciona una interfaz de dplyr para trabajar con bases de datos y traduce código R en SQL.
hms Manipulación de datos de tiempo sin fecha asociada.
reprex Preparación de ejemplos reproducibles para compartir, especialmente en contextos de ayuda y soporte.
rlang Funciones para el trabajo con el lenguaje de programación y la manipulación de datos de R.
rstudioapi Acceso a funciones del API de RStudio, permitiendo la integración entre RStudio y el tidyverse.

3. Tibbles VS Data frames

¿Qué es un tibble?

Un tibble es una versión moderna del data frame clásico en R. Es parte del paquete tibble dentro del ecosistema tidyverse. Los tibbles son diseñados para facilitar el trabajo con conjuntos de datos en R. Presentan mejoras en la impresión y subconjunto de datos, permitiendo nombres de columnas no sintácticos y evitando la conversión automática de tipos (como la conversión de cadenas a factores). Están optimizados para trabajar con datos grandes y en conjunto con otras herramientas del tidyverse.

¿Qué es un data frame?

Un data frame en R es una estructura de datos utilizada para almacenar datos tabulares en forma de un arreglo bidimensional, donde cada columna puede contener valores de un solo tipo, pero diferentes columnas pueden tener diferentes tipos. Es similar a una hoja de cálculo o una tabla de base de datos SQL. Los data frames son parte de la base de R y se utilizan ampliamente para la manipulación y análisis de datos en estadísticas y ciencia de datos.

Característica Tibble Data Frame
Impresión en consola Muestra solo las primeras filas y columnas Muestra todas las filas y columnas
Conversión automática de tipos No convierte automáticamente los tipos Puede convertir cadenas a factores
Resultado al subconjugar Siempre devuelve un tibble Puede devolver df o vector
Nombres de columnas Permite nombres no válidos en R Requiere nombres válidos en R
Compatibilidad con dplyr Optimizado para trabajar con dplyr Compatible, pero no optimizado
Subconjunto con una sola columna Devuelve un tibble Devuelve un df o un vector
Manejo con el tidyverse Parte integral del tidyverse Compatible, pero no parte del tidyverse
Tamaño en la impresión Limitado para mejor visualización Completo, puede ser extenso

4. Manipulación de datos con (dplyr)

El paquete dplyr contiene una serie de verbos para cada trabajo orientado al ordenamiento y la tabulación de datos.

data <- as_tibble(data)
# Convertimos nuestro data frame a tibble

A continuación te presento de forma rápida las principales funciones de dplyr en torno a diferentes objetivos al momento de manipualr datos tabulares.

Tipo Función
Manipulación de filas filter()
slice()
arrange()
sample_n(), sample_frac()
Manipulación de columnas select()
mutate()
transmute()
rename()
Resumen/agregación de datos summarise(), summarize()
group_by()
count()
Operaciones con conjuntos de datos inner_join(), left_join(), right_join(), full_join()
bind_rows(), bind_cols()
anti_join(), semi_join()
Manejo de grupos de datos ungroup()
tally(), add_tally()
Selección y Aplicación de Funciones across()
everything()

Por otro lado, en el contexto de la manipulacion de datos, también debemos de conocer algunos símbolos que nos ayudan a expresar condiciones inherentes a los objetivos de nuestra codificación

Símbolo Uso Paquete Tipo Descripción detallada Uso en manipulación de datos
%>% Pipe operator dplyr Operator for chaining Pasa el resultado de una expresión como argumento a la siguiente expresión. Encadena múltiples operaciones de manipulación de datos, facilitando la lectura y estructura del código.
+, -, *, / Arithmetic operators Base R Arithmetic operator Realizan operaciones aritméticas básicas como suma, resta, multiplicación y división. Se utilizan para realizar cálculos entre columnas o crear nuevas columnas calculadas en un dataset.
==, != Equality and inequality operators Base R Logical operator Comparan valores para determinar si son iguales o diferentes. Se emplean en filtros o condicionales para seleccionar o excluir datos basados en condiciones específicas.
<, <=, >, >= Comparison operators Base R Logical operator Comparan valores para determinar relaciones de menor que, mayor que, etc. Utilizados en la filtración y ordenación de datos para comparar valores numéricos o de fecha.
&, | Logical AND, OR (element-wise) Base R Logical operator Realizan operaciones lógicas AND y OR entre vectores de manera elemento a elemento. Combinan condiciones en filtros para seleccionar datos que cumplen con múltiples criterios.
&&, || Logical AND, OR (first element) Base R Logical operator Realizan operaciones lógicas AND y OR solamente en el primer elemento de vectores. Se usan en estructuras de control para tomar decisiones basadas en la primera posición de los vectores.
%in% Matching operator Base R Logical operator Verifica si los elementos de un vector se encuentran en otro vector. Se utiliza para filtrar filas cuyos valores de columna están dentro de un conjunto específico de valores.
%*% Matrix multiplication operator Base R Arithmetic operator Realiza multiplicación de matrices. Se emplea en operaciones matriciales complejas, como cálculos de transformaciones lineales.
%/%, %% Integer division and modulo operators Base R Arithmetic operator Realizan división entera y calculan el residuo de la división, respectivamente. Se usan para descomponer valores numéricos en componentes o para encontrar patrones periódicos en datos.
: Sequence operator Base R Sequence operator Genera una secuencia de números enteros. Se utiliza para crear rangos de índices cuando se subconjuntan o se seleccionan filas específicas.

Asimismo nuestro paquete dplyr nos ofrece otras funciones que se asocian muy bien con los objetivos del modelamiento de datos

Función Descripción
starts_with(x) Selecciona columnas cuyos nombres comienzan con x.
ends_with(x) Selecciona columnas cuyos nombres terminan con x.
contains(x) Selecciona columnas cuyos nombres contienen x.
matches(x) Selecciona columnas cuyos nombres coinciden con la expresión regular x.
num_range(x, y) Selecciona columnas cuyos nombres coinciden con un rango numérico, basado en el prefijo x y los números en y.
everything() Selecciona todas las columnas.
last_col() Selecciona la última columna.
one_of(x) Selecciona columnas cuyos nombres están en el vector x.
all_of(x) Selecciona todas las columnas en el vector x.
any_of(x) Selecciona cualquier columna en el vector x, sin generar error si alguna no existe.

4.1 Manipulación de filas

4.1.1. La función filter()

data %>% filter (idenpa == 604)
## # A tibble: 1,200 x 274
##    numinves idenpa numentre    reg    ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int>  <int>     <int>   <int>   <int> <int> <int>  <int>
##  1       23    604      541 604000 604000001       8    1856    19     2   1002
##  2       23    604      904 604014 604014001       7    3501    20     1   1009
##  3       23    604      853 604013 604013001       7    3202    64     1   1054
##  4       23    604      803 604012 604012005       7    3001    69     1   1111
##  5       23    604       32 604002 604002003       7     301    68     1   1079
##  6       23    604      854 604013 604013001       7    3202    54     1   1054
##  7       23    604       94 604004 604004001       7     705    26     2   1041
##  8       23    604       72 604004 604004001       7     701    30     1   1042
##  9       23    604      898 604013 604013007       4    3402    58     1   1056
## 10       23    604      485 604000 604000001       8    1844    30     1   1009
## # i 1,190 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...
data %>% filter (idenpa %in% c (604, 32))
## # A tibble: 2,400 x 274
##    numinves idenpa numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23     32        1 32001 32001001       8       1    67     2      1
##  2       23     32        2 32001 32001001       8       1    29     2      1
##  3       23     32        3 32001 32001001       8       1    71     1      1
##  4       23     32        4 32001 32001001       8       1    31     1      1
##  5       23     32        5 32001 32001001       8       1    28     1      1
##  6       23     32        6 32001 32001001       8       1    51     2      1
##  7       23     32        7 32001 32001001       8       1    77     2      1
##  8       23     32        8 32001 32001001       8       1    35     1      1
##  9       23     32        9 32001 32001001       8       1    26     1      1
## 10       23     32       10 32001 32001001       8       1    25     1      1
## # i 2,390 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...
data %>% filter (idenpa == 604, sexo != "1")
## # A tibble: 600 x 274
##    numinves idenpa numentre    reg    ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int>  <int>     <int>   <int>   <int> <int> <int>  <int>
##  1       23    604      541 604000 604000001       8    1856    19     2   1002
##  2       23    604       94 604004 604004001       7     705    26     2   1041
##  3       23    604     1015 604019 604019006       7    4104    22     2   1099
##  4       23    604      893 604013 604013007       4    3401    60     2   1056
##  5       23    604      859 604013 604013001       7    3203    57     2   1056
##  6       23    604      362 604000 604000001       8    1820    51     2   1030
##  7       23    604      505 604000 604000001       8    1848    36     2   1001
##  8       23    604      731 604011 604011001       7    2502    32     2   1073
##  9       23    604      484 604000 604000001       8    1844    18     2   1009
## 10       23    604      756 604011 604011002       1    2602    23     2   1071
## # i 590 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...

4.1.2. La función slice ()

# Seleccionamos manualmente el numero de filas (registros) que deseamos extraer de un data frame
data %>% slice(1:10)
## # A tibble: 10 x 274
##    numinves idenpa numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23     32        1 32001 32001001       8       1    67     2      1
##  2       23     32        2 32001 32001001       8       1    29     2      1
##  3       23     32        3 32001 32001001       8       1    71     1      1
##  4       23     32        4 32001 32001001       8       1    31     1      1
##  5       23     32        5 32001 32001001       8       1    28     1      1
##  6       23     32        6 32001 32001001       8       1    51     2      1
##  7       23     32        7 32001 32001001       8       1    77     2      1
##  8       23     32        8 32001 32001001       8       1    35     1      1
##  9       23     32        9 32001 32001001       8       1    26     1      1
## 10       23     32       10 32001 32001001       8       1    25     1      1
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>,
## #   P13STGBS.A <int>, P13STGBS.B <int>, P13ST.C <int>, P13ST.D <int>, ...
data %>% slice (20, c(21:40))
## # A tibble: 21 x 274
##    numinves idenpa numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23     32       20 32001 32001001       8       2    75     1      1
##  2       23     32       21 32001 32001001       8       3    50     1     35
##  3       23     32       22 32001 32001001       8       3    68     2     35
##  4       23     32       23 32001 32001001       8       3    20     1     35
##  5       23     32       24 32001 32001001       8       3    46     1     35
##  6       23     32       25 32001 32001001       8       3    26     2     35
##  7       23     32       26 32001 32001001       8       3    43     1     35
##  8       23     32       27 32001 32001001       8       3    80     2     35
##  9       23     32       28 32001 32001001       8       3    75     1     35
## 10       23     32       29 32001 32001001       8       3    40     2     35
## # i 11 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...

4.1.3. La función arrange ()

data %>% arrange(edad)
## # A tibble: 19,205 x 274
##    numinves idenpa numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23     76      367 76002 76002020       7      35    16     1     80
##  2       23     76      248 76002 76002197       4      24    16     1     26
##  3       23     76      806 76003 76003225       7      77    16     1     35
##  4       23     76      166 76002 76002193       3      16    16     2     32
##  5       23     76      530 76003 76003139       7      48    16     2     69
##  6       23     76      745 76003 76003270       6      70    16     2     39
##  7       23     76      228 76002 76002196       4      23    16     2     27
##  8       23     76      697 76003 76003132       8      65    16     2     37
##  9       23     76     1162 76005 76005051       6     107    16     1      2
## 10       23     76     1084 76004 76004138       5     101    16     1     10
## # i 19,195 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...
data %>% arrange(tamciud)
## # A tibble: 19,205 x 274
##    numinves idenpa numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23     68       36 68001 68003029       1     108    31     2   9003
##  2       23     68       37 68001 68003029       1     108    28     2   9003
##  3       23     68       38 68001 68003029       1     108    28     1   9003
##  4       23     68       39 68001 68003029       1     108    26     2   9003
##  5       23     68       40 68001 68003029       1     108    18     2   9003
##  6       23     68       41 68001 68003029       1     109    39     1   9002
##  7       23     68       42 68001 68003029       1     109    25     2   9002
##  8       23     68       43 68001 68003029       1     109    46     2   9002
##  9       23     68       44 68001 68003029       1     109    20     2   9002
## 10       23     68       45 68001 68003029       1     109    63     1   9002
## # i 19,195 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...

4.1.4 La función sample_n() y sample_frac

data %>% sample_n(size = 10)  # Cambie 10 por el número de filas que desea muestrear
## # A tibble: 10 x 274
##    numinves idenpa numentre    reg    ciudad tamciud  comdist  edad  sexo codigo
##       <int>  <int>    <int>  <int>     <int>   <int>    <int> <int> <int>  <int>
##  1       23     32      684  32310  32309003       7   6.9 e1    37     1     20
##  2       23    591      932 591902 591008011       4   9.4 e1    70     1     31
##  3       23    214      989 214033 214018006       6   9.9 e1    76     1     13
##  4       23    591      241 591001 591001006       7   2.5 e1    28     2     72
##  5       23    858       40 858003 858003900       5   3.01e8    64     1     36
##  6       23    858      216 858003 858003009       6   3.04e8    46     1     36
##  7       23    340       87 340020 340006008       7   9   e0    47     1     14
##  8       23    862      879 862028 862002009       7   3.18e4    45     2     28
##  9       23    600      322 600011 600011002       4   7.3 e1    35     2     11
## 10       23     32      979  32300  32304000       7   9.8 e1    50     1     47
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>,
## #   P13STGBS.A <int>, P13STGBS.B <int>, P13ST.C <int>, P13ST.D <int>, ...
data %>% sample_frac(frac = 0.5)  # Cambie 0.5 por la fracción de filas que desea muestrear
## # A tibble: 19,205 x 274
##    numinves idenpa numentre    reg    ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int>  <int>     <int>   <int>   <int> <int> <int>  <int>
##  1       23    222      366 222306 222020118       4      37    76     1      8
##  2       23     68      735  68007  68007006       7     701    22     1   6002
##  3       23    600       44 600001 600001005       8       4    48     2      4
##  4       23    604      440 604000 604000001       8    1835    24     2   1025
##  5       23    484     1034 484907 484427017       7  271134    45     1    219
##  6       23     68      509  68004  68004006       8     434    54     2   1011
##  7       23    484      424 484905 484214037       6  140106    24     1    208
##  8       23    604      291 604000 604000001       8    1806    33     1   1033
##  9       23    222      533 222307 222010208       7      54    66     1      6
## 10       23    604     1195 604022 604022002       7    5202    22     1   1103
## # i 19,195 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...

4.2 Manipulación de columnas

4.2.1. La función select()

El comando “select” selecciona las columnas especificadas de un data frame.

data %>% colnames()
##   [1] "numinves"     "idenpa"       "numentre"     "reg"          "ciudad"      
##   [6] "tamciud"      "comdist"      "edad"         "sexo"         "codigo"      
##  [11] "diareal"      "mesreal"      "ini"          "fin"          "dura"        
##  [16] "totrevi"      "totcuot"      "totrech"      "totperd"      "numcasa"     
##  [21] "codsuper"     "supervvi"     "superven"     "codif"        "digit"       
##  [26] "P1ST"         "P2ST"         "P3N"          "P4STGBS"      "P5STGBS"     
##  [31] "P6STGBS"      "P7ST"         "P8STGBS"      "P9STGBS"      "P10STGBS"    
##  [36] "P11STGBS.A"   "P11STGBS.B"   "P12ST"        "P13STGBS.A"   "P13STGBS.B"  
##  [41] "P13ST.C"      "P13ST.D"      "P13ST.E"      "P13ST.F"      "P13ST.G"     
##  [46] "P13ST.H"      "P13ST.I"      "P14ST.A"      "P14ST.B"      "P14ST.C"     
##  [51] "P14ST.D"      "P14ST.E"      "P14ST.F"      "P14ST.G"      "P14ST.H"     
##  [56] "P14N.I"       "P15STGBS"     "P16ST"        "P17ST"        "P18ST.A"     
##  [61] "P18STM.B"     "P18STM.C"     "P18N.D"       "P18N.E"       "P18N.F"      
##  [66] "P18N.G"       "P18N.H"       "P18ST.I"      "P19N"         "P20STM"      
##  [71] "P21ST"        "P22ST"        "P23ST.A"      "P23ST.B"      "P23ST.C"     
##  [76] "P23ST.D"      "P23ST.E"      "P23ST.F"      "P24ST.A"      "P24ST.B"     
##  [81] "P24ST.C"      "P24ST.D"      "P24ST.E"      "P25N.A"       "P25N.B"      
##  [86] "P25N.C"       "P26SDN.A"     "P26SDN.B"     "P26SDN.C"     "P26SDN.D"    
##  [91] "P26SDN.E"     "P26SDN.F"     "P27SDN"       "P28STIN"      "P29STIN.A"   
##  [96] "P29STIN.B"    "P30STIN.A"    "P30INN.B"     "P30INN.C"     "P30INN.D"    
## [101] "P30INN.E"     "P30INN.F"     "P31INN.A"     "P31INN.B"     "P31INN.C"    
## [106] "P31INN.D"     "P31INN.E"     "P31INN.F"     "P31INN.1"     "P31INN.2"    
## [111] "P31INN.3"     "P31INN.4"     "P31INN.5"     "P31INN.6"     "P32INN"      
## [116] "P33N.A"       "P33ST.B"      "P33N.C"       "P33N.D"       "P34WVSNA"    
## [121] "P34WVSNB"     "P35NA"        "P35NB"        "P36ST"        "P37CSN.A"    
## [126] "P37CSN.B"     "P37STCS.C"    "P37WVSSTCS.D" "P37STCS.E"    "P37CSN.F"    
## [131] "P37WVSCS.G"   "P37WVSCS.H"   "P38CSN.A"     "P38CSN.B"     "P38CSN.C"    
## [136] "P38CSN.D"     "P38CSN.E"     "P38CSN.F"     "P38CSN.G"     "P39N"        
## [141] "P40STGBS"     "P41ST.A"      "P41ST.B"      "P41ST.C"      "P41ST.D"     
## [146] "P41ST.E"      "P41ST.F"      "P41ST.G"      "P41ST.H"      "P41ST.I"     
## [151] "P41ST.J"      "P41ST.K"      "P41ST.L"      "P41ST.M"      "P42STGBS"    
## [156] "P43STGBS.A"   "P43STGBS.B"   "P44ST.A"      "P44ST.B"      "P44ST.C"     
## [161] "P44ST.D"      "P45ST.A"      "P45S.B"       "P45ST.C"      "P45STN.D"    
## [166] "P46N"         "P47ST"        "P48ST"        "P49ST"        "P50ST"       
## [171] "P51N"         "P52N"         "P53N.A"       "P53N.B"       "P53N.C"      
## [176] "P53N.D"       "P54N.A"       "P54ST.B"      "P55N"         "P56N.A"      
## [181] "P56N.B"       "P56N.C"       "P56N.D"       "P57ST.A"      "P57ST.B"     
## [186] "P57ST.C"      "P57ST.D"      "P57ST.E"      "P57ST.F"      "P57ST.G"     
## [191] "P57ST.H"      "P58ST"        "P59ST"        "P60ST"        "P61ST"       
## [196] "P62N.1"       "P62ST.2"      "P62ST.3"      "P62ST.4"      "P62ST.5"     
## [201] "P62N.6"       "P62ST.7"      "P62ST.8"      "P62N.9"       "P62ST.10"    
## [206] "P62ST.11"     "P62N.12"      "P62N.13"      "P62N.14"      "P62N.15"     
## [211] "P62N.16"      "P62N.17"      "P63ST"        "S1"           "S1A"         
## [216] "S2"           "S3"           "S4"           "S5"           "S6"          
## [221] "S7"           "S8"           "S9"           "S10"          "S11"         
## [226] "S12"          "S13INN.A.A"   "S13INN.A.B"   "S13INN.A.C"   "S13INN.A.D"  
## [231] "S13INN.A.1"   "S13INN.A.2"   "S13INN.A.3"   "S14M.A"       "S14M.B"      
## [236] "S14M.C"       "S14M.D"       "S14M.E"       "S14M.F"       "S14M.G"      
## [241] "S14M.H"       "S14M.I"       "S14M.J"       "S15.A"        "S15.B"       
## [246] "S16"          "S17"          "S18.A"        "S18.B"        "S19"         
## [251] "S20.A"        "S20.B"        "S20.C"        "S20.D"        "S20.E"       
## [256] "S20.F"        "S20.G"        "S20.H"        "S20.I"        "S20.J"       
## [261] "S20.K"        "S21A"         "S21B"         "S22.A"        "S22.B"       
## [266] "S23"          "S24"          "REEEDUC.1"    "REEDUC.2"     "REEDUC.3"    
## [271] "reedad"       "perpart"      "fampart"      "wt"
# starts_with: Selecciona columnas que empiezan con "num"
data %>% select(starts_with("num"))
## # A tibble: 19,205 x 3
##    numinves numentre numcasa
##       <int>    <int>   <int>
##  1       23        1       1
##  2       23        2       1
##  3       23        3       1
##  4       23        4       1
##  5       23        5       1
##  6       23        6       1
##  7       23        7       1
##  8       23        8       1
##  9       23        9       1
## 10       23       10       1
## # i 19,195 more rows
# ends_with: Selecciona columnas que terminan con "A"
data %>% select(ends_with("A"))
## # A tibble: 19,205 x 35
##    idenpa  dura numcasa P11STGBS.A P13STGBS.A P14ST.A P18ST.A P23ST.A P24ST.A
##     <int> <int>   <int>      <int>      <int>   <int>   <int>   <int>   <int>
##  1     32    29       1          4          4       3       3       4       2
##  2     32    56       1          4          4       1       3       3       4
##  3     32    41       1          3          4       1       2       1       3
##  4     32    35       1          3          4       3       3       3       1
##  5     32    35       1          2          3       1       2       2       3
##  6     32    36       1          2          2       1       3       2       3
##  7     32    33       1          4          2       1       2       4       2
##  8     32    44       1          3          2       2       2       3      NA
##  9     32    46       1          4          3       2       1       3       2
## 10     32    33       1          3          2       1       3       3       2
## # i 19,195 more rows
## # i 26 more variables: P25N.A <int>, P26SDN.A <int>, P29STIN.A <int>,
## #   P30STIN.A <int>, P31INN.A <int>, P33N.A <int>, P34WVSNA <int>, P35NA <int>,
## #   P37CSN.A <int>, P38CSN.A <int>, P41ST.A <int>, P43STGBS.A <int>,
## #   P44ST.A <int>, P45ST.A <int>, P53N.A <int>, P54N.A <int>, P56N.A <int>,
## #   P57ST.A <int>, S1A <int>, S13INN.A.A <int>, S14M.A <int>, S15.A <int>,
## #   S18.A <int>, S20.A <int>, S21A <int>, S22.A <int>
# contains: Selecciona columnas que contienen "ciud"
data %>% select(contains("ciud"))
## # A tibble: 19,205 x 2
##      ciudad tamciud
##       <int>   <int>
##  1 32001001       8
##  2 32001001       8
##  3 32001001       8
##  4 32001001       8
##  5 32001001       8
##  6 32001001       8
##  7 32001001       8
##  8 32001001       8
##  9 32001001       8
## 10 32001001       8
## # i 19,195 more rows
# matches: Selecciona columnas que coinciden con la expresión regular, por ejemplo, que contengan "P1" seguido de cualquier caracter
data %>% select(matches("P1."))
## # A tibble: 19,205 x 36
##     P1ST P10STGBS P11STGBS.A P11STGBS.B P12ST P13STGBS.A P13STGBS.B P13ST.C
##    <int>    <int>      <int>      <int> <int>      <int>      <int>   <int>
##  1     3        1          4          4     1          4          4       2
##  2     4        2          4          4     1          4          4       1
##  3     2        1          3          4     1          4          3       3
##  4     3        1          3          4     1          4          4       4
##  5     3        1          2          3     2          3          4       3
##  6     1        1          2          3     1          2          2       2
##  7     1        1          4          3     1          2          3       2
##  8     1        3          3          3     1          2          2       1
##  9     2        1          4          4     1          3          4       3
## 10     1        1          3          4     1          2          1       4
## # i 19,195 more rows
## # i 28 more variables: P13ST.D <int>, P13ST.E <int>, P13ST.F <int>,
## #   P13ST.G <int>, P13ST.H <int>, P13ST.I <int>, P14ST.A <int>, P14ST.B <int>,
## #   P14ST.C <int>, P14ST.D <int>, P14ST.E <int>, P14ST.F <int>, P14ST.G <int>,
## #   P14ST.H <int>, P14N.I <int>, P15STGBS <int>, P16ST <int>, P17ST <int>,
## #   P18ST.A <int>, P18STM.B <int>, P18STM.C <int>, P18N.D <int>, P18N.E <int>,
## #   P18N.F <int>, P18N.G <int>, P18N.H <int>, P18ST.I <int>, P19N <int>
# num_range: Selecciona columnas con nombres en un rango numérico, por ejemplo, "P18N" desde 1 a 4
data %>% select(num_range("P18N", 1:4))
## # A tibble: 19,205 x 0
# everything: Selecciona todas las columnas
data %>% select(c(1, 20:30), everything())
## # A tibble: 19,205 x 274
##    numinves numcasa codsuper supervvi superven codif digit  P1ST  P2ST   P3N
##       <int>   <int>    <int>    <int>    <int> <int> <int> <int> <int> <int>
##  1       23       1        1        1        3     1     0     3     3     4
##  2       23       1        0        2        0     1     0     4     3     4
##  3       23       1        0        2        0     1     0     2     3     4
##  4       23       1        1        1        0     1     0     3     2     4
##  5       23       1        0        2        0     1     0     3     2     2
##  6       23       1        0        2        0     1     0     1     2     3
##  7       23       1        0        2        0     1     0     1     1     3
##  8       23       1        0        2        0     1     0     1     2     2
##  9       23       1        0        2        0     1     0     2     3     4
## 10       23       1        1        1        3     1     0     1     2     3
## # i 19,195 more rows
## # i 264 more variables: P4STGBS <int>, P5STGBS <int>, idenpa <int>,
## #   numentre <int>, reg <int>, ciudad <int>, tamciud <int>, comdist <int>,
## #   edad <int>, sexo <int>, codigo <int>, diareal <int>, mesreal <int>,
## #   ini <int>, fin <int>, dura <int>, totrevi <int>, totcuot <int>,
## #   totrech <int>, totperd <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>,
## #   P9STGBS <int>, P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, ...
# last_col: Selecciona la última columna
data %>% select(last_col())
## # A tibble: 19,205 x 1
##       wt
##    <dbl>
##  1 0.882
##  2 0.882
##  3 0.882
##  4 0.882
##  5 0.882
##  6 0.882
##  7 0.735
##  8 0.882
##  9 0.882
## 10 0.735
## # i 19,195 more rows
# one_of: Selecciona columnas cuyos nombres están en el vector dado, por ejemplo "numinves" y "edad"
data %>% select(one_of(c("numinves", "edad")))
## # A tibble: 19,205 x 2
##    numinves  edad
##       <int> <int>
##  1       23    67
##  2       23    29
##  3       23    71
##  4       23    31
##  5       23    28
##  6       23    51
##  7       23    77
##  8       23    35
##  9       23    26
## 10       23    25
## # i 19,195 more rows
# all_of: Selecciona todas las columnas en el vector dado, por ejemplo "numinves" y "edad"
data %>% select(all_of(c("numinves", "edad")))
## # A tibble: 19,205 x 2
##    numinves  edad
##       <int> <int>
##  1       23    67
##  2       23    29
##  3       23    71
##  4       23    31
##  5       23    28
##  6       23    51
##  7       23    77
##  8       23    35
##  9       23    26
## 10       23    25
## # i 19,195 more rows
# any_of: Selecciona cualquier columna en el vector dado, por ejemplo "numinves" y "edad"
data %>% select(any_of(c("numinves", "edad")))
## # A tibble: 19,205 x 2
##    numinves  edad
##       <int> <int>
##  1       23    67
##  2       23    29
##  3       23    71
##  4       23    31
##  5       23    28
##  6       23    51
##  7       23    77
##  8       23    35
##  9       23    26
## 10       23    25
## # i 19,195 more rows
# Seleccionamos todas las variables añadiendo una excepción
data %>% select(-dura)
## # A tibble: 19,205 x 273
##    numinves idenpa numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23     32        1 32001 32001001       8       1    67     2      1
##  2       23     32        2 32001 32001001       8       1    29     2      1
##  3       23     32        3 32001 32001001       8       1    71     1      1
##  4       23     32        4 32001 32001001       8       1    31     1      1
##  5       23     32        5 32001 32001001       8       1    28     1      1
##  6       23     32        6 32001 32001001       8       1    51     2      1
##  7       23     32        7 32001 32001001       8       1    77     2      1
##  8       23     32        8 32001 32001001       8       1    35     1      1
##  9       23     32        9 32001 32001001       8       1    26     1      1
## 10       23     32       10 32001 32001001       8       1    25     1      1
## # i 19,195 more rows
## # i 263 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   totrevi <int>, totcuot <int>, totrech <int>, totperd <int>, numcasa <int>,
## #   codsuper <int>, supervvi <int>, superven <int>, codif <int>, digit <int>,
## #   P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>, P5STGBS <int>,
## #   P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>, P10STGBS <int>,
## #   P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, P13STGBS.A <int>, ...
# Seleccionamos todas las variables añadiendo un conjunto de excepciones
data %>% select(-c(dura, reg, comdist, tamciud))
## # A tibble: 19,205 x 270
##    numinves idenpa numentre   ciudad  edad  sexo codigo diareal mesreal   ini
##       <int>  <int>    <int>    <int> <int> <int>  <int>   <int>   <int> <int>
##  1       23     32        1 32001001    67     2      1      22       2   842
##  2       23     32        2 32001001    29     2      1      22       2  1434
##  3       23     32        3 32001001    71     1      1      24       2   925
##  4       23     32        4 32001001    31     1      1      24       2  1438
##  5       23     32        5 32001001    28     1      1      26       2  1348
##  6       23     32        6 32001001    51     2      1      26       2  1941
##  7       23     32        7 32001001    77     2      1      27       2   947
##  8       23     32        8 32001001    35     1      1      27       2  1447
##  9       23     32        9 32001001    26     1      1      28       2   838
## 10       23     32       10 32001001    25     1      1      28       2  1421
## # i 19,195 more rows
## # i 260 more variables: fin <int>, totrevi <int>, totcuot <int>, totrech <int>,
## #   totperd <int>, numcasa <int>, codsuper <int>, supervvi <int>,
## #   superven <int>, codif <int>, digit <int>, P1ST <int>, P2ST <int>,
## #   P3N <int>, P4STGBS <int>, P5STGBS <int>, P6STGBS <int>, P7ST <int>,
## #   P8STGBS <int>, P9STGBS <int>, P10STGBS <int>, P11STGBS.A <int>,
## #   P11STGBS.B <int>, P12ST <int>, P13STGBS.A <int>, P13STGBS.B <int>, ...

4.2.1 La función mutate()

data %>% 
  mutate(wt_integer = as.integer(wt))# Transformé la variable wt (peso de la observación) a su expresión en numeros enteros. Esto no es recomendable, solo es un ejemplo ilustrativo. 
## # A tibble: 19,205 x 275
##    numinves idenpa numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23     32        1 32001 32001001       8       1    67     2      1
##  2       23     32        2 32001 32001001       8       1    29     2      1
##  3       23     32        3 32001 32001001       8       1    71     1      1
##  4       23     32        4 32001 32001001       8       1    31     1      1
##  5       23     32        5 32001 32001001       8       1    28     1      1
##  6       23     32        6 32001 32001001       8       1    51     2      1
##  7       23     32        7 32001 32001001       8       1    77     2      1
##  8       23     32        8 32001 32001001       8       1    35     1      1
##  9       23     32        9 32001 32001001       8       1    26     1      1
## 10       23     32       10 32001 32001001       8       1    25     1      1
## # i 19,195 more rows
## # i 265 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...

4.2.2 La función transmute ()

# Supongamos que tenemos un dataframe llamado prueba
prueba <- tibble(
  x = 1:5,
  y = 6:10
)

# Usando transmute para transformar y crear nuevas columnas
prueba1 <- prueba %>%
  transmute(
    new_x = x * 2,
    new_y = y + 10
  )

# prueba1 solo tendrá las columnas new_x y new_y

4.2.3 La función rename ()

data %>% rename(país = idenpa)
## # A tibble: 19,205 x 274
##    numinves  país numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int> <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23    32        1 32001 32001001       8       1    67     2      1
##  2       23    32        2 32001 32001001       8       1    29     2      1
##  3       23    32        3 32001 32001001       8       1    71     1      1
##  4       23    32        4 32001 32001001       8       1    31     1      1
##  5       23    32        5 32001 32001001       8       1    28     1      1
##  6       23    32        6 32001 32001001       8       1    51     2      1
##  7       23    32        7 32001 32001001       8       1    77     2      1
##  8       23    32        8 32001 32001001       8       1    35     1      1
##  9       23    32        9 32001 32001001       8       1    26     1      1
## 10       23    32       10 32001 32001001       8       1    25     1      1
## # i 19,195 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   dura <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...
data %>% rename(duración = dura)
## # A tibble: 19,205 x 274
##    numinves idenpa numentre   reg   ciudad tamciud comdist  edad  sexo codigo
##       <int>  <int>    <int> <int>    <int>   <int>   <int> <int> <int>  <int>
##  1       23     32        1 32001 32001001       8       1    67     2      1
##  2       23     32        2 32001 32001001       8       1    29     2      1
##  3       23     32        3 32001 32001001       8       1    71     1      1
##  4       23     32        4 32001 32001001       8       1    31     1      1
##  5       23     32        5 32001 32001001       8       1    28     1      1
##  6       23     32        6 32001 32001001       8       1    51     2      1
##  7       23     32        7 32001 32001001       8       1    77     2      1
##  8       23     32        8 32001 32001001       8       1    35     1      1
##  9       23     32        9 32001 32001001       8       1    26     1      1
## 10       23     32       10 32001 32001001       8       1    25     1      1
## # i 19,195 more rows
## # i 264 more variables: diareal <int>, mesreal <int>, ini <int>, fin <int>,
## #   duración <int>, totrevi <int>, totcuot <int>, totrech <int>, totperd <int>,
## #   numcasa <int>, codsuper <int>, supervvi <int>, superven <int>, codif <int>,
## #   digit <int>, P1ST <int>, P2ST <int>, P3N <int>, P4STGBS <int>,
## #   P5STGBS <int>, P6STGBS <int>, P7ST <int>, P8STGBS <int>, P9STGBS <int>,
## #   P10STGBS <int>, P11STGBS.A <int>, P11STGBS.B <int>, P12ST <int>, ...

4.3 Resumen y agregación de datos

4.3.1 La función sumarise() o summarize()

prueba1 %>% summarise(
  promedio_de_x = mean (new_x), 
  suma_de_y = sum(new_y)
  )
## # A tibble: 1 x 2
##   promedio_de_x suma_de_y
##           <dbl>     <dbl>
## 1             6        90

4.3.2 La función count()

data %>% count (idenpa)
## # A tibble: 17 x 2
##    idenpa     n
##     <int> <int>
##  1     32  1200
##  2     68  1200
##  3     76  1204
##  4    152  1200
##  5    170  1200
##  6    188  1000
##  7    214  1000
##  8    218  1200
##  9    222  1000
## 10    320  1000
## 11    340  1000
## 12    484  1200
## 13    591  1000
## 14    600  1200
## 15    604  1200
## 16    858  1200
## 17    862  1201
data %>% count(sexo)
## # A tibble: 2 x 2
##    sexo     n
##   <int> <int>
## 1     1  9119
## 2     2 10086

5. Concatenando funciones simultáneas

A partir de ahora empezaremos a manipular datos con diversos criterios simultáneos. Es decir aplicaremos funciones diferentes a nuestro data set para obtener la información que necesitamos.

Recuerda estos símbolos, pues en este apartado los utilizaremos intensivamente.

Símbolo Uso Paquete Tipo Descripción detallada Uso en manipulación de datos
%>% Pipe operator dplyr Operator for chaining Pasa el resultado de una expresión como argumento a la siguiente expresión. Encadena múltiples operaciones de manipulación de datos, facilitando la lectura y estructura del código.
+, -, *, / Arithmetic operators Base R Arithmetic operator Realizan operaciones aritméticas básicas como suma, resta, multiplicación y división. Se utilizan para realizar cálculos entre columnas o crear nuevas columnas calculadas en un dataset.
==, != Equality and inequality operators Base R Logical operator Comparan valores para determinar si son iguales o diferentes. Se emplean en filtros o condicionales para seleccionar o excluir datos basados en condiciones específicas.
<, <=, >, >= Comparison operators Base R Logical operator Comparan valores para determinar relaciones de menor que, mayor que, etc. Utilizados en la filtración y ordenación de datos para comparar valores numéricos o de fecha.
&, | Logical AND, OR (element-wise) Base R Logical operator Realizan operaciones lógicas AND y OR entre vectores de manera elemento a elemento. Combinan condiciones en filtros para seleccionar datos que cumplen con múltiples criterios.
&&, || Logical AND, OR (first element) Base R Logical operator Realizan operaciones lógicas AND y OR solamente en el primer elemento de vectores. Se usan en estructuras de control para tomar decisiones basadas en la primera posición de los vectores.
%in% Matching operator Base R Logical operator Verifica si los elementos de un vector se encuentran en otro vector. Se utiliza para filtrar filas cuyos valores de columna están dentro de un conjunto específico de valores.
%*% Matrix multiplication operator Base R Arithmetic operator Realiza multiplicación de matrices. Se emplea en operaciones matriciales complejas, como cálculos de transformaciones lineales.
%/%, %% Integer division and modulo operators Base R Arithmetic operator Realizan división entera y calculan el residuo de la división, respectivamente. Se usan para descomponer valores numéricos en componentes o para encontrar patrones periódicos en datos.
: Sequence operator Base R Sequence operator Genera una secuencia de números enteros. Se utiliza para crear rangos de índices cuando se subconjuntan o se seleccionan filas específicas.

Tarea 1:

Necesitamos filtrar observaciones para la Comunidad Andina, tomando en cuenta solo las variables que comienzan con “P14”.Solo deseamos obtener una muestra de 340 observaciones, para posteriormente verificar cuantas tenemos por pais ** Recuerda que los paises asociados a esta plataforma internacional son : Bolivia, Colombia, Ecuador y Perú **

País Código
Bolivia 68
Colombia 170
Ecuador 218
Perú 604
data %>% filter(idenpa %in% c (68, 170, 218, 604)) %>%
  select(idenpa, starts_with("P14")) %>% 
  sample_n(340) %>% 
  group_by (idenpa) %>% mutate(ocurrencias = n())
## # A tibble: 340 x 11
## # Groups:   idenpa [4]
##    idenpa P14ST.A P14ST.B P14ST.C P14ST.D P14ST.E P14ST.F P14ST.G P14ST.H P14N.I
##     <int>   <int>   <int>   <int>   <int>   <int>   <int>   <int>   <int>  <int>
##  1     68       4       2       3       4       2       2       3       3      2
##  2    218       3       3       3       3       3       3       3       3      3
##  3    218       4       4       4       4       4       4       4       4      4
##  4    604       3       3       3       4       3       3       2       4      3
##  5    604       1       3       4       4       3       3       3       3      2
##  6    604       3       3       4       4       3       4       4       4      3
##  7    170       1       2       3       3       3       2       2       3      4
##  8    170       1       2       2       3       2       4       2       3      1
##  9     68       2       3       3       3       3       3       3       3      3
## 10    170       3       2       3       4       4       3       2       3      4
## # i 330 more rows
## # i 1 more variable: ocurrencias <int>

Tarea 2:

Necesitamos conocer las edades promedio de cada pais de la Comunidad Andina, y al mismo tiempo, el comportamiento de la aprobación presidencial en torno a ese promedio. Pero además necesitamos renombrar las variables a etiquetas mas comprensibles.

# Primero creemos el data set para evitar ampliar el código innecesariamente 
CAN <- data %>% filter(idenpa %in% c (68, 170, 218, 604)) %>%  select (idenpa, P15STGBS, edad, sexo) %>% drop_na()
CAN %>% 
  rename(País = idenpa, Aprobación_Ejecutivo = P15STGBS) %>% 
  mutate(País = case_when(País %in% c(68) ~ 'Bolivia',
                          País %in% c(170) ~ 'Colombia',
                          País %in% c(218) ~ 'Ecuador',
                          País %in% c(604) ~ 'Perú'),
         Aprobación_Ejecutivo = case_when(Aprobación_Ejecutivo == 1 ~ 'Apruebo',
                                          Aprobación_Ejecutivo == 2 ~ 'Desapruebo')) %>% 
  count(País, Aprobación_Ejecutivo) %>%
  group_by(País) %>%
  mutate(Porcentaje = n / sum(n) * 100)
## # A tibble: 8 x 4
## # Groups:   País [4]
##   País     Aprobación_Ejecutivo     n Porcentaje
##   <chr>    <chr>                <int>      <dbl>
## 1 Bolivia  Apruebo                556       48.5
## 2 Bolivia  Desapruebo             590       51.5
## 3 Colombia Apruebo                516       45.5
## 4 Colombia Desapruebo             617       54.5
## 5 Ecuador  Apruebo                163       14.0
## 6 Ecuador  Desapruebo            1002       86.0
## 7 Perú     Apruebo                179       15.2
## 8 Perú     Desapruebo             995       84.8