5.3 Operacionalización paso a paso
Paquetes que utilizaremos en este subcapítulo:
En este apartado practicaremos el método de operacionalización tradicional. Usando como referencia el texto de “La medición empírica de las clases sociales” (Torrado, 1998b), seguiremos los pasos de la autora para llegar en primer lugar a un nomenclador de la Condición Socio-Ocupacional (CSO) y posteriormente a un sistema de clases sociales de 3 clases que puede ser subdividido en estratos.
Como hemos dicho la transformación de un concepto complejo como el de “clase social” a un esquema empírico que permita su medición, implica una serie de pasos en los que es necesario prestar atención y ser sumamente ordenado. Los pasos a seguir serán los siguientes:
1. Presentaremos la propuesta de la autora, en la que señala como a partir de distintas combinaciones entre categorías de las variables consideradas surgen posiciones socio-ocupacionales.
Transformaremos y crearemos algunas variables de la EPH necesarias para la construcción del esquema.
Presentaremos el código para la construcción del nomenclador CSO.
Crearemos el sistema clasificatorio de clases sociales y lo probaremos.
5.3.1 Punto de partida
Como hemos señalado la autora parte de 5 variables para la construcción de su esquema de clases: la ocupación (agrupada en grupos ocupacionales), la categoría ocupacional, el sector de actividad, el tamaño del establecimiento y la rama de actividad (que no utilizaremos en este caso). A continuación presentamos la Tabla 5.10 de doble entrada que da lugar a las posiciones del nomenclador (Torrado, 1998b, p. 232), que ya hemos revisado en el apartado anterior:
Grupo de ocupación | Empleadores | Asalariados | Servicio doméstico | Cuenta propia y familiar sin remuneración | |||
Sector privado | Sector privado | Sector privado | Sector privado | Sector público | |||
Más de 5 ocupados | Hasta 5 ocupados | Más de 5 ocupados | Hasta 5 ocupados | ||||
1. Empresarios, directores de empresas y funcionarios públicos superiores | 1.1 | 5.1 | 1.2 | 4.1.2 | 1.1* | 11 | 5.2 |
2. Propietarios de establecimientos | 3 | 4.1.1 | 4.2 | ||||
3. Profesionales en función específica | 2.1.1 | 2.1.2 | 2.3.1 | 2.3.2 | 2.4 | 2.2 | |
4. Técnicos, docentes y supervisores | 3 | 5.1 | 4.1.1 | 4.1.2 | 4.2 | 5.2 | |
5. Empleados y vendedores | 6.1.1 | 6.1.2 | 6.2 | ||||
6. Trabajadores especializados | 8.1.1 | 8.1.2 | 8.2 | 7 | |||
7. Trabajadores no especializados | 10 | 10 | 9.1.1 | 9.1.2 | 9.2 | 10 | |
8. Empleados domésticos | 11 | 11 | 11 | 11 | 11 | 11 | |
9. Sin especificar | 12 | 12 | 12 | 12 | 12 | 12 | 12 |
* Modificación respecto a la propuesta de Torrado |
La tarea fundamental es ir elaborando un código que permita “ubicar” a las personas de la base de datos en cada una de las celdas. Dicha tabla es una buena ayuda-memoria para saber que casos fueron ya clasificados a medida que vamos armando el código, y conocer que situaciones nos faltaría clasificar. Como toda variable, el CSO debe ser exhaustivo (contemplar todas las posiciones posibles) y excluyente (un caso no puede tomar dos posiciones distintas).
5.3.2 Acondicionando la base
En este caso, seguiremos utilizando la base de la EPH del segundo trimestre de 2015.
En primer lugar vamos a descomponer los dígitos del CNO, ya que la variable PP04D_COD será la que nos proporcionará la información ocupacional. La descomposición la realizaremos fundamentalmente para trabajar separadamente con el carácter ocupacional y la calificación de la tarea. Para ello utilizaremos la función str_sub del paquete ´stringr´ (se encuentra en el tidyverse
), que nos permite “partir” variables de cadena según lo solicitemos. Por último convertimos dichas variables a tipo numérica, ya que realizaremos operaciones lógicas que así lo requieren.
eph_ind_215$cno12 <- str_sub(eph_ind_215$PP04D_COD, 1, 2) #señala que parta de la posición 1 hasta 2 del código
eph_ind_215$cno3 <- str_sub(eph_ind_215$PP04D_COD, 3, 3) #señala que parta de la posición 3 a la 3 del código
eph_ind_215$cno4 <- str_sub(eph_ind_215$PP04D_COD, 4, 4)
eph_ind_215$cno5 <- str_sub(eph_ind_215$PP04D_COD, 5, 5)
eph_ind_215$cno12 <- as.numeric(eph_ind_215$cno12)
eph_ind_215$cno3 <- as.numeric(eph_ind_215$cno3)
eph_ind_215$cno4 <- as.numeric(eph_ind_215$cno4)
eph_ind_215$cno5 <- as.numeric(eph_ind_215$cno5)
El segundo paso será crear una variable que permita agrupar a las ocupaciones del mismo modo que lo hizo Torrado (primera columna del gráfico anterior). Para esto generaremos la variable grupo de ocupación (GO), que, en nuestro caso, no es más que una agrupamiento entre el carácter ocupacional (dos primeros dígitos del CNO) y la calificación de la tarea (quinto dígito del CNO).
A través de la función case_when del paquete dplyr
podremos asignarle un valor a la variable go en la medida que se cumplan determinadas condiciones. Para quienes trabajan con SPSS
, dicha función es similar al IF
. Por otro lado, a través de la función mutate
crearemos la nueva variable go.
eph_ind_215$go <- NA
eph_ind_215 <- eph_ind_215 %>%
mutate(go = case_when((cno12 >= 0 & cno12 <=4) | (cno12 == 7) ~ 1,
(cno12 >= 5 & cno12 <=6) ~ 2,
(cno5 == 1) & ((cno12 >= 10 & cno12 <= 20) |
(cno12 == 32) | (cno12 >= 34 & cno12 <= 40) |
(cno12 >= 42 & cno12 <= 47) | (cno12 >= 49 & cno12 <= 54) |
(cno12 >= 60 & cno12 <= 64) | (cno12 >= 70 & cno12 <= 92)) ~ 3,
(cno5 > 4) & (cno12 == 11 | cno12 == 42 | cno12 == 43 |
cno12 == 50 | cno12 == 70 | cno12 == 81 | cno12 == 91) ~ 3,
(cno5 == 2) & ((cno12 >= 10 & cno12 <= 32) | (cno12 >= 34 & cno12 <= 54) |
(cno12 >= 56 & cno12 <= 92)) ~ 4,
(cno5 == 1) & ((cno12 == 30 | cno12 == 31 | cno12 == 41 | cno12 == 48) |
(cno12 >= 56 & cno12 <= 58) | (cno12 == 65)) ~ 4,
(cno5 == 3) & (cno12 == 40 | cno12 == 42 | cno12 == 43 | cno12 == 45 |
cno12 == 91) ~ 4,
(cno5 == 4) & (cno12 == 42 | cno12 == 43 | cno12 == 45) ~ 4,
(cno5 > 4) & (cno12 == 40 | cno12 == 41 | cno12 == 44 | cno12 == 45 |
cno12 == 46 | cno12 == 51 | cno12 == 92) ~ 4,
(cno5 == 3) & ((cno12 >= 10 & cno12 <= 32) | (cno12 == 35) | (cno12 == 41) |
(cno12 == 54) | (cno12 == 81)) ~ 5,
(cno5 == 4) & ((cno12 >= 10 & cno12 <= 11) | (cno12 >= 30 & cno12 <= 32) |
(cno12 == 35)) ~ 5,
(cno5 > 4) & ((cno12 == 10) | (cno12 >= 20 & cno12 <= 32) | (cno12 == 35)) ~ 5,
(cno5 == 1 | cno5 == 2) & (cno12 == 55) ~ 6,
(cno5 == 3) & ((cno12 == 34) | (cno12 == 36) | (cno12 == 44) |
(cno12 >= 46 & cno12 <= 53) | (cno12 >= 55 & cno12 <= 80) |
(cno12 == 82) | (cno12 == 90) | (cno12 == 92)) ~ 6,
(cno5 == 4) & ((cno12 == 44) | (cno12 == 49) | (cno12 == 53) | (cno12 == 57)) ~ 6,
(cno5 > 4) & ((cno12 == 34) | (cno12 >= 47 & cno12 <= 49) | (cno12 >= 52 & cno12 <= 54) | (cno12 >= 57 & cno12 <= 65) | (cno12 >= 71 & cno12 <= 80) | (cno12 >= 82 & cno12 <= 90)) ~ 6,
(cno12 == 33) ~ 7,
(cno5 == 4 | cno5 == 9) & ((cno12 == 20) | (cno12 == 34) |
(cno12 >= 36 & cno12 <= 41) | (cno12 >= 46 & cno12 <= 48) |
(cno12 >= 50 & cno12 <= 52) | (cno12 == 54) | (cno12 == 56) |
(cno12 >= 58 & cno12 <= 92)) ~ 7,
(cno5 >= 4) & (cno12 == 55) ~ 8
,(cno12 == 99) | (is.na(cno12)) ~ 9))
Para poder hacer un primer chequeo de la variable que creamos crearemos la misma en formato factor y la etiquetaremos. Esto lo hacemos solo en términos ilustrativos, ya que no usaremos la varible posteriormente. Los casos “sin especificar” corresponden fundamentalmente a personas inactivas y desocupadas.
eph_ind_215$go_f <- factor(eph_ind_215$go, labels = c("Empresarios, directores de empresas y funcionarios públicos superiores",
"Propietarios de establecimientos", "Profesionales en función específica",
"Técnicos, docentes y supervisores", "Empleados y vendedores", "Trabajadores especializados",
"Trabajadores no especializados", "Empleados domesticos", "Sin especificar"))
table(eph_ind_215$go_f)
Empresarios, directores de empresas y funcionarios públicos superiores
140
Propietarios de establecimientos
1023
Profesionales en función específica
1326
Técnicos, docentes y supervisores
3825
Empleados y vendedores
6165
Trabajadores especializados
8399
Trabajadores no especializados
2113
Empleados domesticos
1354
Sin especificar
35683
En tercer lugar, necesitaremos recodificar dos variables más: el sector de actividad y el tamaño del establecimiento. En el primer caso, juntaremos la categoría “de otro tipo” al sector privado. De esta forma el valor 1 sera asumido por el “sector privado” y el 2 por el “sector público”. Para ello utilizamos la función recode del paquete car
, que es similar a la función recode en SPSS
. Para el caso del tamaño del establecimiento separaremos a los casos que trabajan en establecimientos de menos de 5 trabajadores inclusive y aquellos de más de 5. Para ello nos basaremos tanto en la variable PP04C, que mide directamente el tamaño, y la variable PP04C99, que lo mide cuando la anterior variable no es respondida (revisar el diseño de registro de la EPH para mayor comprensión de como se preguntan dichos indicadores). El valor 1 representa las empresas de menos de 5 trabajadores inclusive y el valor 2 las de más de 5 trabajadores.
eph_ind_215 <- eph_ind_215 %>%
mutate(sector_act = car::recode(eph_ind_215$PP04A, "1=2; 2:3=1"))
eph_ind_215 <- eph_ind_215 %>%
mutate(tamano = case_when((PP04C > 0 & PP04C <= 5) | (PP04C == 99 & PP04C99 ==
1) ~ 1, (PP04C > 5 & PP04C < 99) | (PP04C == 99 & PP04C99 >= 2) ~ 2, PP04C ==
0 | PP04C99 == 0 ~ NA_real_))
5.3.3 Creación CSO desagregado
Con las variables necesarias ya creadas y/o recodificadas, podemos empezar a “llenar los casilleros” del cuadro anteriormente presentado. Lo que haremos es asignar a cada celda una posición en el CSO desagregado, en función de la combinación entre categorías de las variables.
A modo de ejemplo vamos mostrar como llenaríamos los casilleros de la primera fila, columna primera y segunda, es decir, directores y gerentes de empresas que son empleadores de empresas privadas de grandes establecimientos, por un lado, y de pequeños establecimientos, por el otro. En el primer caso, tres condiciones deben cumplirse, que el GO sea 1, que la categoría ocupacional sea “empleador” (valor 1) y que el tamaño del establecimiento sea mayor a 5 (valor 2). En el segundo caso, los criterios para el GO y la categoría ocupacional serán similares salvo que el tamaño del establecimiento será de menos de 5 ocupados (valor 1).
A continuación, mostramos el código completo para la construcción del CSO desagregado.
eph_ind_215 <- eph_ind_215 %>%
mutate(cso_desag = case_when(go==1 & CAT_OCUP==1 & tamano==2 ~ 1,
go==1 & CAT_OCUP==1 & tamano==1 ~ 13,
go==1 & CAT_OCUP==3 & sector_act==1 & tamano==2 ~ 2,
go==1 & CAT_OCUP==3 & sector_act==1 & is.na(tamano) ~ 2,
go==1 & CAT_OCUP==3 & sector_act==1 & tamano==1 ~ 11,
go==1 & CAT_OCUP==3 & sector_act==2 ~ 1,
go==1 & CAT_OCUP==2 ~ 14,
go==1 & CAT_OCUP==4 ~ 14,
go==1 & CAT_OCUP==NA ~ 14,
go==2 & CAT_OCUP==1 & tamano==2 ~ 9,
go==2 & CAT_OCUP==1 & tamano==1 ~ 13,
go==2 & CAT_OCUP==3 & sector_act==1 & tamano==2 ~ 10,
go==2 & CAT_OCUP==3 & sector_act==1 & is.na(tamano) ~ 10,
go==2 & CAT_OCUP==3 & sector_act==1 & tamano==1 ~ 11,
go==2 & CAT_OCUP==3 & sector_act==2 ~ 12,
go==2 & CAT_OCUP==2 ~ 14,
go==2 & CAT_OCUP==4 ~ 14,
go==2 & CAT_OCUP==NA ~ 14,
go==3 & CAT_OCUP==1 & tamano==2 ~ 3,
go==3 & CAT_OCUP==1 & tamano==1 ~ 4,
go==3 & CAT_OCUP==3 & sector_act==1 & tamano==2 ~ 6,
go==3 & CAT_OCUP==3 & sector_act==1 & is.na(tamano) ~ 6,
go==3 & CAT_OCUP==3 & sector_act==1 & tamano==1 ~ 7,
go==3 & CAT_OCUP==3 & sector_act==2 ~ 8,
go==3 & CAT_OCUP==2 ~ 5,
go==3 & CAT_OCUP==4 ~ 5,
go==3 & CAT_OCUP==NA ~ 5,
go==4 & CAT_OCUP==1 & tamano==2 ~ 9,
go==4 & CAT_OCUP==1 & tamano==1 ~ 13,
go==4 & CAT_OCUP==3 & sector_act==1 & tamano==2 ~ 10,
go==4 & CAT_OCUP==3 & sector_act==1 & is.na(tamano) ~ 10,
go==4 & CAT_OCUP==3 & sector_act==1 & tamano==1 ~ 11,
go==4 & CAT_OCUP==3 & sector_act==2 ~ 12,
go==4 & CAT_OCUP==2 ~ 14,
go==4 & CAT_OCUP==4 ~ 14,
go==4 & CAT_OCUP== NA ~ 14,
go==5 & CAT_OCUP==1 & tamano==2 ~ 9,
go==5 & CAT_OCUP==1 & tamano==1 ~ 13,
go==5 & CAT_OCUP==3 & sector_act==1 & tamano==2 ~ 15,
go==5 & CAT_OCUP==3 & sector_act==1 & is.na(tamano) ~ 15,
go==5 & CAT_OCUP==3 & sector_act==1 & tamano==1 ~ 16,
go==5 & CAT_OCUP==3 & sector_act==2 ~ 17,
go==5 & CAT_OCUP==2 ~ 14,
go==5 & CAT_OCUP==4 ~ 14,
go==5 & CAT_OCUP== NA ~ 14,
go==6 & CAT_OCUP==1 & tamano==2 ~ 9,
go==6 & CAT_OCUP==1 & tamano==1 ~ 13,
go==6 & CAT_OCUP==3 & sector_act==1 & tamano==2 ~ 19,
go==6 & CAT_OCUP==3 & sector_act==1 & is.na(tamano) ~ 19,
go==6 & CAT_OCUP==3 & sector_act==1 & tamano==1 ~ 20,
go==6 & CAT_OCUP==3 & sector_act==2 ~ 21,
go==6 & CAT_OCUP==2 ~ 18,
go==6 & CAT_OCUP==4 ~ 18,
go==6 & CAT_OCUP== NA ~ 18,
go==7 & CAT_OCUP==1 & tamano==2 ~ 25,
go==7 & CAT_OCUP==1 & tamano==1 ~ 25,
go==7 & CAT_OCUP==3 & sector_act==1 & tamano==2 ~ 22,
go==7 & CAT_OCUP==3 & sector_act==1 & is.na(tamano) ~ 22,
go==7 & CAT_OCUP==3 & sector_act==1 & tamano==1 ~ 23,
go==7 & CAT_OCUP==3 & sector_act==2 ~ 24,
go==7 & CAT_OCUP==4 ~ 25,
go==7 & CAT_OCUP==2 ~ 25,
go==7 & CAT_OCUP== NA ~ 25,
go==8 ~ 26,
go==9 ~ 27))
Hasta aquí ya tenemos construido el CSO desagregado, que si bien permite una discriminación más precisa de la situación socio-ocupacional de las personas, sus 27 categorías dificultan la síntesis y el cruce con otras variables. En la Tabla 5.11, indicamos el código y la nomenclatura original que la autora asigna a cada posición en el texto (Torrado, 1998b, p. 226), el código que le asignamos nosotros para el uso en la sintaxis y la recodificación del CSO agregado que será revisado en la próxima sección.
Nº sintaxis | Nº real | CSO desagregado | CSO agregado |
---|---|---|---|
1 | 1.1 | DIREC (ER - SPR. TE>5) | 1 |
2 | 1.2 | DIREC (AS - SPR. TE>5) | |
3 | 2.1.1 | PROF (ER- SPR. >5) | 2 |
4 | 2.1.2 | PROF (ER- SPR. <=5) | |
5 | 2.2 | PROF (CP) | |
6 | 2.3.1 | PROF (AS- SPR. >5) | |
7 | 2.3.2 | PROF (AS- SPR. <=5) | |
8 | 2.4 | PROF (AS- SPU) | |
9 | 3 | PPE | 3 |
10 | 4.1.1 | TECN (AS -SPR. TE>5) | 4 |
11 | 4.1.2 | TECN (AS -SPR. TE<=5) | |
12 | 4.2 | TECN (AS -SPU) | |
13 | 5.1 | PPA (ER - SPR. TE <=5) | 5 |
14 | 5.2 | PPA (CP) | |
15 | 6.1.1 | EAV (AS - SPR. TE>5) | 6 |
16 | 6.1.2 | EAV (AS - SPR. TE<=5) | |
17 | 6.2 | EAV (AS - SPU) | |
18 | 7 | TEA | 7 |
19 | 8.1.1 | OCAL (AS - SPR. TE>5) | 8 |
20 | 8.1.2 | OCAL (AS - SPR. TE<=5) | |
21 | 8.2 | OCAL (AS - SPU) | |
22 | 9.1.1 | ONCAL (AS - SPR. TE>5) | 9 |
23 | 9.1.2 | ONCAL (AS - SPR. TE<=5) | |
24 | 9.2 | ONCAL (AS - SPU) | |
25 | 10 | TMARG | 10 |
26 | 11 | EDOM | 11 |
27 | 12 | Sin especificar CSO | 12 |
Fuente: elaboración propia en base a Torrado (1998) |
5.3.4 Creación del CSO agregado
Con el CSO desagregado construido, ya estamos en condiciones de colapsarlo y generar un CSO agregado, que permite una mejor aplicación para el análisis de la estructura social e indagar aspectos a un menor nivel de agregación del que se logra con una clasificación de clases sociales. En la Tabla 5.11 previo pudimos observar como los estratos son agregados hasta formar 12 grupos (uno de carácter residual, en este caso lo damos como valor perdido).
En el siguiente script elaboramos la variable cso_agg que guarda bajo formato numérico los grupos agregados del CSO y una variable de tipo factor (css_agg_factor) que nos permite trabajar con los grupos etiquetados. Finalmente, observaremos como se distribuye la población según el CSO agregado.
eph_ind_215 <- eph_ind_215 %>%
mutate(cso_agg = case_when(cso_desag <= 2 ~ 1, cso_desag >= 3 & cso_desag <=
8 ~ 2, cso_desag == 9 ~ 3, cso_desag >= 10 & cso_desag <= 12 ~ 4, cso_desag >=
13 & cso_desag <= 14 ~ 5, cso_desag >= 15 & cso_desag <= 17 ~ 6, cso_desag ==
18 ~ 7, cso_desag >= 19 & cso_desag <= 21 ~ 8, cso_desag >= 22 & cso_desag <=
24 ~ 9, cso_desag == 25 ~ 10, cso_desag == 26 ~ 11, cso_desag == 27 | is.na(cso_desag) ~
NA_real_))
eph_ind_215$cso_agg_factor <- factor(eph_ind_215$cso_agg, labels = c("DIREC", "PROF",
"PPE", "TECN", "PPA", "EAV", "TEA", "OCAL", "ONCAL", "TMARG", "EDOM"))
table(eph_ind_215$cso_agg_factor)
DIREC PROF PPE TECN PPA EAV TEA OCAL ONCAL TMARG EDOM
138 1325 226 3324 2482 4988 2273 6119 1841 272 1354
5.3.5 Creación esquema de clase
Por último ya estamos en condiciones de elaborar el sistema de clases que la autora propone (Torrado, 1998b, p. 235). Vamos a realizar dos versiones, una de 6 categorías (clase6) y otra de 3 (clase3). En cada caso, generaremos un variable factor, que nos permitirá el etiquetamiento y el mejor tratamiento de la variable.
eph_ind_215 <- eph_ind_215 %>%
mutate(clase6 = case_when(cso_agg == 1 ~ 1, (cso_agg == 2 & CAT_OCUP == 2) |
cso_agg == 3 | cso_agg == 5 ~ 2, (cso_agg == 2 & CAT_OCUP >= 3) | cso_agg ==
4 | cso_agg == 6 ~ 3, cso_agg == 7 ~ 4, cso_agg == 8 | cso_agg == 9 ~ 5,
cso_agg == 10 | cso_agg == 11 ~ 6))
eph_ind_215$clase6_factor <- factor(eph_ind_215$clase6, labels = c("Clase alta",
"Clase media - autónoma", "Clase media - asalariada", "Clase obrera - autónoma",
"Clase obrera - asalariada", "Clase obrera - trabajadores marginales"))
eph_ind_215 <- eph_ind_215 %>%
mutate(clase3 = car::recode(eph_ind_215$clase6, "1=1; 2:3=2; 4:6=3"))
eph_ind_215$clase3_factor <- factor(eph_ind_215$clase3, labels = c("Clase alta",
"Clase media", "Clase obrera"))
Para calcular la distribución de frecuencias ponderadas de la población por clase social, presentamos dos procedimientos. Uno, que es el que veníamos utilizando, a través de los comandos group_by y tally del paquete dplyr
, y otro a través de la función freq del paquete summarytools
. Este último nos devuelve una tabla similar al comando tabulate de STATA
o del análisis de frecuencias que realiza SPSS
. Asimismo, nos permite señalar que variable se utilizara para ponderar los resultados.
eph_ind_215 %>%
filter(!is.na(clase6_factor)) %>% #quitamos los casos perdidos del análisis
group_by(clase6_factor) %>%
tally(PONDERA) %>%
mutate(porcentaje = round((n/sum(n))*100, digits = 2))
# A tibble: 6 × 3
clase6_factor n porcentaje
<fct> <dbl> <dbl>
1 Clase alta 49429 0.45
2 Clase media - autónoma 1446840 13.1
3 Clase media - asalariada 4095309 37.0
4 Clase obrera - autónoma 1013705 9.15
5 Clase obrera - asalariada 3708848 33.5
6 Clase obrera - trabajadores marginales 758822 6.85
summarytools::freq(eph_ind_215$clase6_factor, weights = eph_ind_215$PONDERA, cumul = FALSE, report.nas = FALSE)
Weighted Frequencies
eph_ind_215$clase6_factor
Type: Factor
Weights: PONDERA
Freq %
-------------------------------------------- ------------- --------
Clase alta 49429.00 0.45
Clase media - autónoma 1446840.00 13.07
Clase media - asalariada 4095309.00 36.98
Clase obrera - autónoma 1013705.00 9.15
Clase obrera - asalariada 3708848.00 33.49
Clase obrera - trabajadores marginales 758822.00 6.85
Total 11072953.00 100.00
Como puede observarse, alcanzamos los mismos resultados, pero la función freq es más rápida y sencilla de aplicar para analizar distribuciones de frecuencias. Existen varios paquetes para R
que permiten la elaboración de tablas y análisis de frecuencia, y summarytools
es una de las posibilidades. Si están interesados, les sugerimos que busquen y encuentren aquel paquete y funciones que les resulte más cómodo para hacer sus análisis.