5.3 Operacionalización paso a paso

Paquetes que utilizaremos en este subcapítulo:

library(tidyverse)
library(car)
library(summarytools)

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.

  1. Transformaremos y crearemos algunas variables de la EPH necesarias para la construcción del esquema.

  2. Presentaremos el código para la construcción del nomenclador CSO.

  3. 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:

Tabla 5.10: Cruce de variables socio-ocupacionales y generación de estratos socales

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
Fuente: elaboración propia en base a Torrado (1998)

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.

Tabla 5.11: Asignación de códigos al CSO desagregado

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.