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.
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..
| N° | 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‘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. |
¿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 |
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 tibbleA 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. |
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>, ...
# 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>, ...
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>, ...
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>, ...
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>, ...
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>, ...
# 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_ydata %>% 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>, ...
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
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
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. |
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>
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