Análisis de la política pública del Gobierno del Estado

El Gobierno del Estado está implementando una política pública nueva tomando en cuenta el ingreso mensual y seguridad social. Se requiere analizar los datos de 30 personas para identificar diferentes grupos de interés según su entidad federativa, seguridad social y nivel salarial.

# Crear el data frame directamente con los datos
SS <- data.frame(
  No = 1:30,
  Entidad_federativa = c(30, 30, 30, 10, 12, 11, 15, 30, 8, 2, 3, 4, 20, 10, 22, 32, 31, 33, 30, 30, 30, 5, 18, 27, 28, 28, 11, 19, 19, 15),
  SS = c(1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0),
  Salario = c(10000, 12000, 8000, 1500, 3000, 3500, 3200, 2000, 9594, 9744, 9012, 8251, 8000, 14508, 12891, 3537, 5264, 12590, 11217, 4166, 5803, 12816, 8888, 8433, 9658, 14208, 7515, 4212, 8143, 2223)
)

class(SS)
## [1] "data.frame"
str(SS)
## 'data.frame':    30 obs. of  4 variables:
##  $ No                : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Entidad_federativa: num  30 30 30 10 12 11 15 30 8 2 ...
##  $ SS                : num  1 1 1 0 1 0 0 0 0 0 ...
##  $ Salario           : num  10000 12000 8000 1500 3000 ...
head(SS)
##   No Entidad_federativa SS Salario
## 1  1                 30  1   10000
## 2  2                 30  1   12000
## 3  3                 30  1    8000
## 4  4                 10  0    1500
## 5  5                 12  1    3000
## 6  6                 11  0    3500
tail(SS)
##    No Entidad_federativa SS Salario
## 25 25                 28  0    9658
## 26 26                 28  0   14208
## 27 27                 11  0    7515
## 28 28                 19  0    4212
## 29 29                 19  1    8143
## 30 30                 15  0    2223
summary(SS)
##        No        Entidad_federativa       SS         Salario     
##  Min.   : 1.00   Min.   : 2.00      Min.   :0.0   Min.   : 1500  
##  1st Qu.: 8.25   1st Qu.:11.00      1st Qu.:0.0   1st Qu.: 4178  
##  Median :15.50   Median :19.50      Median :0.0   Median : 8197  
##  Mean   :15.50   Mean   :19.77      Mean   :0.4   Mean   : 7796  
##  3rd Qu.:22.75   3rd Qu.:30.00      3rd Qu.:1.0   3rd Qu.: 9936  
##  Max.   :30.00   Max.   :33.00      Max.   :1.0   Max.   :14508

Ahora vamos a identificar aquellas personas que son de Veracruz

#Identificamos personas de Veracruz (estado 30)
# Usamos as.data.frame para asegurar que sea data frame
Veracruz <- as.data.frame(SS[SS$Entidad_federativa == 30, ])
str(Veracruz)
## 'data.frame':    7 obs. of  4 variables:
##  $ No                : int  1 2 3 8 19 20 21
##  $ Entidad_federativa: num  30 30 30 30 30 30 30
##  $ SS                : num  1 1 1 0 0 1 0
##  $ Salario           : num  10000 12000 8000 2000 11217 ...
Veracruz
##    No Entidad_federativa SS Salario
## 1   1                 30  1   10000
## 2   2                 30  1   12000
## 3   3                 30  1    8000
## 8   8                 30  0    2000
## 19 19                 30  0   11217
## 20 20                 30  1    4166
## 21 21                 30  0    5803

Ahora identificaremos a aquellas personas que no tienen seguridad social

# Identificamos trabajadores sin seguridad social (SS = 0)
sin_seguridad <- as.data.frame(SS[SS$SS == 0, ])

# Para Veracruz sin seguridad social
Veracruz_Sin_seguridad <- as.data.frame(SS[SS$Entidad_federativa == 30 & SS$SS == 0, ])

sin_seguridad
##    No Entidad_federativa SS Salario
## 4   4                 10  0    1500
## 6   6                 11  0    3500
## 7   7                 15  0    3200
## 8   8                 30  0    2000
## 9   9                  8  0    9594
## 10 10                  2  0    9744
## 15 15                 22  0   12891
## 16 16                 32  0    3537
## 19 19                 30  0   11217
## 21 21                 30  0    5803
## 22 22                  5  0   12816
## 23 23                 18  0    8888
## 24 24                 27  0    8433
## 25 25                 28  0    9658
## 26 26                 28  0   14208
## 27 27                 11  0    7515
## 28 28                 19  0    4212
## 30 30                 15  0    2223
Veracruz_Sin_seguridad
##    No Entidad_federativa SS Salario
## 8   8                 30  0    2000
## 19 19                 30  0   11217
## 21 21                 30  0    5803

Ahora identificaremos a aquellas personas con alto salario

# Identificamos trabajadores que ganan arriba de 8,000
alto_salario <- as.data.frame(SS[SS$Salario > 8000, ])

Veracruz_alto_salario <- as.data.frame(SS[SS$Entidad_federativa == 30 & SS$Salario > 8000, ])

alto_salario
##    No Entidad_federativa SS Salario
## 1   1                 30  1   10000
## 2   2                 30  1   12000
## 9   9                  8  0    9594
## 10 10                  2  0    9744
## 11 11                  3  1    9012
## 12 12                  4  1    8251
## 14 14                 10  1   14508
## 15 15                 22  0   12891
## 18 18                 33  1   12590
## 19 19                 30  0   11217
## 22 22                  5  0   12816
## 23 23                 18  0    8888
## 24 24                 27  0    8433
## 25 25                 28  0    9658
## 26 26                 28  0   14208
## 29 29                 19  1    8143
Veracruz_alto_salario
##    No Entidad_federativa SS Salario
## 1   1                 30  1   10000
## 2   2                 30  1   12000
## 19 19                 30  0   11217

Ahora identificaremos a aquellas personas con bajo salario

# Identificamos trabajadores que ganan menos de 8,000
bajo_salario <- as.data.frame(SS[SS$Salario < 8000, ])

Veracruz_bajo_salario <- as.data.frame(SS[SS$Entidad_federativa == 30 & SS$Salario < 8000, ])

bajo_salario
##    No Entidad_federativa SS Salario
## 4   4                 10  0    1500
## 5   5                 12  1    3000
## 6   6                 11  0    3500
## 7   7                 15  0    3200
## 8   8                 30  0    2000
## 16 16                 32  0    3537
## 17 17                 31  1    5264
## 20 20                 30  1    4166
## 21 21                 30  0    5803
## 27 27                 11  0    7515
## 28 28                 19  0    4212
## 30 30                 15  0    2223
Veracruz_bajo_salario
##    No Entidad_federativa SS Salario
## 8   8                 30  0    2000
## 20 20                 30  1    4166
## 21 21                 30  0    5803

Condiciones y mensajes para cada persona

Ahora aplicaremos condiciones para generar mensajes personalizados según las características de cada persona, utilizando las funciones condicionales que hemos visto en clase.

# Crear mensajes condicionales usando ifelse
mensajes_seguridad <- ifelse(SS$SS == 1, "SÍ tiene seguridad social", "NO tiene seguridad social")
mensajes_salario <- ifelse(SS$Salario > 8000, "gana MÁS de 8,000", 
                          ifelse(SS$Salario == 8000, "gana EXACTAMENTE 8,000", "gana MENOS de 8,000"))
mensajes_estado <- ifelse(SS$Entidad_federativa == 30, "Es de Veracruz", "No es de Veracruz")

# Mostrar resultados en un data frame
resultados_analisis <- data.frame(
  Persona = SS$No,
  Estado = mensajes_estado,
  Seguridad_Social = mensajes_seguridad,
  Salario = mensajes_salario
)
resultados_analisis
##    Persona            Estado          Seguridad_Social                Salario
## 1        1    Es de Veracruz SÍ tiene seguridad social      gana MÁS de 8,000
## 2        2    Es de Veracruz SÍ tiene seguridad social      gana MÁS de 8,000
## 3        3    Es de Veracruz SÍ tiene seguridad social gana EXACTAMENTE 8,000
## 4        4 No es de Veracruz NO tiene seguridad social    gana MENOS de 8,000
## 5        5 No es de Veracruz SÍ tiene seguridad social    gana MENOS de 8,000
## 6        6 No es de Veracruz NO tiene seguridad social    gana MENOS de 8,000
## 7        7 No es de Veracruz NO tiene seguridad social    gana MENOS de 8,000
## 8        8    Es de Veracruz NO tiene seguridad social    gana MENOS de 8,000
## 9        9 No es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 10      10 No es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 11      11 No es de Veracruz SÍ tiene seguridad social      gana MÁS de 8,000
## 12      12 No es de Veracruz SÍ tiene seguridad social      gana MÁS de 8,000
## 13      13 No es de Veracruz SÍ tiene seguridad social gana EXACTAMENTE 8,000
## 14      14 No es de Veracruz SÍ tiene seguridad social      gana MÁS de 8,000
## 15      15 No es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 16      16 No es de Veracruz NO tiene seguridad social    gana MENOS de 8,000
## 17      17 No es de Veracruz SÍ tiene seguridad social    gana MENOS de 8,000
## 18      18 No es de Veracruz SÍ tiene seguridad social      gana MÁS de 8,000
## 19      19    Es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 20      20    Es de Veracruz SÍ tiene seguridad social    gana MENOS de 8,000
## 21      21    Es de Veracruz NO tiene seguridad social    gana MENOS de 8,000
## 22      22 No es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 23      23 No es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 24      24 No es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 25      25 No es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 26      26 No es de Veracruz NO tiene seguridad social      gana MÁS de 8,000
## 27      27 No es de Veracruz NO tiene seguridad social    gana MENOS de 8,000
## 28      28 No es de Veracruz NO tiene seguridad social    gana MENOS de 8,000
## 29      29 No es de Veracruz SÍ tiene seguridad social      gana MÁS de 8,000
## 30      30 No es de Veracruz NO tiene seguridad social    gana MENOS de 8,000

Finalmente haremos un análisis combinado para identificar prioridades para la creación de la política pública

# Personas con prioridad alta (Veracruz, sin SS, salario bajo)
prioridad_alta <- as.data.frame(SS[SS$Entidad_federativa == 30 & SS$SS == 0 & SS$Salario < 8000, ])
# Personas con prioridad media (Veracruz, sin SS, cualquier salario)
prioridad_media <- as.data.frame(SS[SS$Entidad_federativa == 30 & SS$SS == 0, ])

# Personas que cumplen múltiples condiciones (sin seguridad social y con salario alto)
Veracruz_sin_ss_alto <- as.data.frame(SS[SS$Entidad_federativa == 30 & SS$SS == 0 & SS$Salario > 8000, ])

prioridad_alta
##    No Entidad_federativa SS Salario
## 8   8                 30  0    2000
## 21 21                 30  0    5803
prioridad_media
##    No Entidad_federativa SS Salario
## 8   8                 30  0    2000
## 19 19                 30  0   11217
## 21 21                 30  0    5803
Veracruz_sin_ss_alto
##    No Entidad_federativa SS Salario
## 19 19                 30  0   11217

Conclusión:

El análisis condicional permite identificar que existen 2 personas que requieren atención prioritaria por ser de Veracruz, no contar con seguridad social y tener un salario bajo. Esta información será fundamental para que el Gobierno del Estado implemente efectivamente su política pública, focalizando los recursos hacia quienes más lo necesitan.

El uso de funciones condicionales como “ifelse” y “subset” facilita la categorización y priorización de la población objetivo, demostrando la utilidad de R para el análisis de políticas públicas.