Skip to contents

This function translates a vector of 3-digit ISCO08/ISCO88COM codes to ESEC-MP codes using the translation tables stored in all_schema$isco08_to_esec / all_schema$isco88com_to_esec_three. After translating to ESEC using these tables, this function reassigns managers and professionals (ISCO08/ISCO88COM codes 1 and 2) to have both high/low managers and profesionals

Usage

isco08_to_esec_mp(
  x,
  is_supervisor,
  self_employed,
  n_employees,
  label = FALSE,
  to_factor = FALSE
)

isco88com_to_esec_mp(
  x,
  is_supervisor,
  self_employed,
  n_employees,
  full_method = TRUE,
  label = FALSE,
  to_factor = FALSE
)

Arguments

x

A character vector of 3-digit ISCO codes. This should be the 4-digit equivalent so instead of 131, the code should be 1310, which is the 4-digit version of of the 3-digit ISCO.

is_supervisor

A numeric vector indicating whether each individual is a supervisor (1, e.g. responsible for other employees) or not (0).

self_employed

A numeric vector indicating whether each individual is self-employed (1) or an employee (0).

n_employees

A numeric vector indicating the number of employees under each respondent.

label

A logical value indicating whether to return the labels of the translated ESEC-MP codes (default is FALSE).

to_factor

A logical value indicating whether to return a factor instead of a character. The order of the labels is taken from the sorted codes of ESEC-MP which can be found in the source code of each function.

full_method

a boolean on whether to apply the full method or the simple method.

Value

A character vector of ESEC-MP codes.

Details

This function translates a vector of 3-digit ISCO08/ISCO88COM codes to ESEC-MP codes.

ESEC-MP is a class schema similar to ESEC but reassigns managers and professionals (ISCO08/ISCO88COM codes 1 and 2) to have both high/low managers and profesionals. Similarly to DIGCLASS::isco88com_to_esec, isco88com_to_esec_mp allows to translate using the simple or full method. isco08_to_esec_mp does not allow to translate using two different methods and uses the full method by default.

This schema is a slight variation of the original ESEC and the logic used to build this is like this:

  • All occupations with ESEC digit 1 and ISCO 1-digit 0 or 1 or has subordinates, is a high manager

  • All occupations with ESEC digit 1 and is self-employed with more than 1 employee, is a high manager

  • All occupations with ESEC digit 1 and has a 1-digit ISCO higher than 1 and is either an employee or a self-employed with no subordinates, is a high professional

  • All occupations with ESEC digit 2 and ISCO 1-digit 0 or 1 or has subordinates, is a lower manager

  • All occupations with ESEC digit 2 and is self-employed with more than 1 employee, is a lower manager

  • All occupations with ESEC digit 2 and has a 1-digit ISCO higher than 1 and is either an employee or a self-employed with no subordinates, is a lower professional

This translation was created from the Stata do file shared by Oscar Smallenbroek called "ESEC-MP.do". For more info, please contact the author.

This function will accept 3 digit codes as 4 digits. This means that if the 3-digit code is 131 then it should be 1310. All codes should be 4 digits, even though the code is represented as 3-digits (1310, 1320, etc..)

For more information on this class schema, please checkthe references below:

  • Smallenbroek O, Hertel F, Barone C (2022) Measuring class hierarchies in post-industrial societies: a criterion and construct validation of EGP and ESEC across 31 countries. Sociological Methods & Research. Epub ahead of print 11 November. https://doi.org/10.1177/00491241221134522

Examples

library(dplyr)

# convert to three digits
ess$isco08_three <- isco08_swap(ess$isco08, from = 4, to = 3)

ess %>%
  transmute(
    isco08_three,
    esec = isco08_to_esec(
      isco08_three,
      is_supervisor,
      self_employed,
      emplno,
      label = FALSE
    ),
    esec_label = isco08_to_esec(
      isco08_three,
      is_supervisor,
      self_employed,
      emplno,
      label = TRUE
    )
  )
#> # A tibble: 48,285 × 3
#>    isco08_three esec  esec_label                                                
#>    <chr>        <chr> <chr>                                                     
#>  1 5410         3     'Intermediate occupations'                                
#>  2 1320         2     'Lower mgrs/professionals, higher supervisory/technicians'
#>  3 3130         6     'Lower supervisors and technicians'                       
#>  4 7130         6     'Lower supervisors and technicians'                       
#>  5 6110         8     'Lower technical'                                         
#>  6 6110         6     'Lower supervisors and technicians'                       
#>  7 9310         6     'Lower supervisors and technicians'                       
#>  8 1310         2     'Lower mgrs/professionals, higher supervisory/technicians'
#>  9 1310         5     'Small employers and self-employed (agriculture)'         
#> 10 6110         6     'Lower supervisors and technicians'                       
#> # ℹ 48,275 more rows

# Convert isco88com to three digits
ess$isco88com_three <- isco88_swap(ess$isco88com, from = 4, to = 3)

# Using the full method
ess %>%
  transmute(
    isco88com_three,
    esec = isco88com_to_esec_mp(
      isco88com_three,
      is_supervisor,
      self_employed,
      emplno,
      full_method = TRUE,
      label = FALSE
    ),
    esec_label = isco88com_to_esec_mp(
      isco88com_three,
      is_supervisor,
      self_employed,
      emplno,
      full_method = TRUE,
      label = TRUE
    )
  )
#> # A tibble: 48,285 × 3
#>    isco88com_three esec  esec_label                      
#>    <chr>           <chr> <chr>                           
#>  1 5160            5     Higher-grade White-collar       
#>  2 1220            3     Lower Manager                   
#>  3 8120            11    Routine                         
#>  4 7140            8     Higher-grade Blue-collar        
#>  5 6110            10    Lower-grade Blue-collar         
#>  6 6110            8     Higher-grade Blue-collar        
#>  7 9310            8     Higher-grade Blue-collar        
#>  8 1220            3     Lower Manager                   
#>  9 1220            6     Self-employed and Small Employer
#> 10 6110            8     Higher-grade Blue-collar        
#> # ℹ 48,275 more rows

# Using the simple method. For esec_mp
# we need all variables (is_supervisor, self_employed, etc..)
# because we need to assign the manager/professionals depending
# these variables.
ess %>%
  transmute(
    isco88com_three,
    esec_simple = isco88com_to_esec_mp(
      isco88com_three,
      is_supervisor,
      self_employed,
      emplno,
      full_method = FALSE,
      label = FALSE
    ),
    esec_simple_label = isco88com_to_esec_mp(
      isco88com_three,
      is_supervisor,
      self_employed,
      emplno,
      full_method = FALSE,
      label = TRUE
    )
  )
#> # A tibble: 48,285 × 3
#>    isco88com_three esec_simple esec_simple_label                           
#>    <chr>           <chr>       <chr>                                       
#>  1 5160            9           Lower-grade White-collar                    
#>  2 1220            3           Lower Manager                               
#>  3 8120            11          Routine                                     
#>  4 7140            10          Lower-grade Blue-collar                     
#>  5 6110            7           Self-employed and Small Employer agriculture
#>  6 6110            7           Self-employed and Small Employer agriculture
#>  7 9310            11          Routine                                     
#>  8 1220            3           Lower Manager                               
#>  9 1220            3           Lower Manager                               
#> 10 6110            7           Self-employed and Small Employer agriculture
#> # ℹ 48,275 more rows