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"
## '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 ...
## 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
## 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
## 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 ...
## 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
## 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
## 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
## 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
## No Entidad_federativa SS Salario
## 8 8 30 0 2000
## 19 19 30 0 11217
## 21 21 30 0 5803
## 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.