EPEAR 2024

Author

NIS Adisac (Avance)

Primeros Resultados

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.2     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.0
✔ purrr     1.0.1     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ purrr::%||%()   masks base::%||%()
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(gt)

data <- read_csv("respuestas.csv")
Rows: 190 Columns: 33
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (30): Marca temporal, Con qué género se identifica?, Cuál es su edad?, E...
dbl  (3): En una escala que va de 1 a 5, en qué grado siente usted que como ...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Cargar la base de datos

# Usar regex para extraer solo valores numéricos válidos
data$Edad_Limpiada <- sapply(data$`Cuál es su edad?`  , function(x) {
  edad <- regmatches(as.character(x), regexpr("\\b\\d{1,3}\\b", as.character(x)))
  if(length(edad) > 0) {
    return(as.numeric(edad))
  } else {
    return(NA)
  }
})

# Filtrar los valores dentro del rango 60-120
data_filtrada <- subset(data, Edad_Limpiada >= 60 & Edad_Limpiada <= 120)

# Mostrar un resumen de la columna de edad después de la limpieza
summary(data_filtrada$Edad_Limpiada)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  60.00   65.00   70.00   70.37   74.00   94.00 
# Crear los segmentos de edad
data_filtrada$Segmento_Edad <- cut(
  data_filtrada$Edad_Limpiada,
  breaks = c(60, 69, 79, 120),
  labels = c("60-69", "70-79", "80 y +"),
  right = FALSE
)

# Ver los primeros registros con los segmentos de edad
head(data_filtrada[, c("Edad_Limpiada", "Segmento_Edad")])
# A tibble: 6 × 2
  Edad_Limpiada Segmento_Edad
          <dbl> <fct>        
1            60 60-69        
2            77 70-79        
3            74 70-79        
4            68 60-69        
5            71 70-79        
6            69 70-79        

Edad

# Calcular los porcentajes por segmento
data_segmentos <- as.data.frame(table(data_filtrada$Segmento_Edad))
data_segmentos$Porcentaje <- (data_segmentos$Freq / sum(data_segmentos$Freq)) * 100

# Crear el gráfico de barras con ggplot2
ggplot(data_segmentos, aes(x = Var1, y = Porcentaje, fill = Var1)) +
  geom_bar(stat = "identity", color = "black") +
  geom_text(aes(label = paste0(round(Porcentaje, 1), "%")), vjust = -0.5) +
  labs(title = "Distribución de Edad por Segmento", x = "Segmento de Edad", y = "Porcentaje (%)") +
  theme_minimal() +
  scale_fill_brewer(palette = "Pastel1")

# Calcular los porcentajes dentro de cada grupo de edad por género
data_agrupada <- data_filtrada %>%
  group_by(Segmento_Edad, `Con qué género se identifica?`) %>%
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100)
`summarise()` has grouped output by 'Segmento_Edad'. You can override using the
`.groups` argument.
# Crear el gráfico facetado por grupo de edad y género
ggplot(data_agrupada, aes(x = `Con qué género se identifica?`, y = Porcentaje, fill = `Con qué género se identifica?`)) +
  geom_bar(stat = "identity", position = "dodge", color = "black") +
  labs(title = "Distribución de Grupos de Edad por Género", x = "Género", y = "Porcentaje (%)") +
  #scale_y_continuous(labels = scales::percent_format()) +
  facet_wrap(~ Segmento_Edad, nrow = 1) +
  theme_minimal() +
  scale_fill_brewer(palette = "Pastel1")

ubicacion

# Cargar las librerías necesarias
library(dplyr)
library(stringr)

# Normalizar nombres de provincias
data_normalizada <- data_filtrada %>%
  mutate(
    # Convertir todo a minúsculas y eliminar espacios extra
    Provincia = str_to_lower(str_trim(`En qué provincia argentina reside?`)),
    Localidad = str_to_lower(str_trim(`Y en qué localidad vive?`))
  ) %>%
  # Unificar variantes comunes
  mutate(
    Provincia = case_when(
      Provincia %in% c("buenos aires", "bs as", "bs.as.", "pcia de buenos aires", "provincia de buenos aires", "pcia de buenos aires") ~ "buenos aires",
      Provincia %in% c("caba", "ciudad de buenos aires", "ciudad autónoma de buenos aires", "capital federal") ~ "ciudad de buenos aires",
      Provincia %in% c("cordoba", "córdoba") ~ "córdoba",
      Provincia %in% c("santa fe") ~ "santa fe",
      Provincia %in% c("mendoza") ~ "mendoza",
      # Agregar más correcciones aquí según sea necesario
      TRUE ~ Provincia
    ),
    # Normalizar localidades con criterios similares
    Localidad = case_when(
      Localidad %in% c("caba", "capital federal", "ciudad autónoma de buenos aires", "barrio de flores") ~ "ciudad de buenos aires",
      Localidad %in% c("la plata", "ciudad de la plata") ~ "la plata",
      Localidad %in% c("mar del plata", "mdp") ~ "mar del plata",
      # Agregar más correcciones aquí según sea necesario
      TRUE ~ Localidad
    )
  )


data_normalizada %>% 
  group_by(Provincia) %>% 
  count() %>% 
  arrange(desc(n))
# A tibble: 39 × 2
# Groups:   Provincia [39]
   Provincia                  n
   <chr>                  <int>
 1 buenos aires              73
 2 ciudad de buenos aires    33
 3 chubut                    14
 4 córdoba                   11
 5 entre rios                 9
 6 mendoza                    6
 7 entre ríos                 4
 8 bsas                       2
 9 chaco                      2
10 san luis                   2
# ℹ 29 more rows
data_normalizada %>% 
  group_by(Localidad) %>% 
  count() %>% 
  arrange(desc(n))
# A tibble: 95 × 2
# Groups:   Localidad [95]
   Localidad                  n
   <chr>                  <int>
 1 ciudad de buenos aires    33
 2 comodoro rivadavia        12
 3 paraná                    10
 4 la plata                   6
 5 capital                    4
 6 parana                     4
 7 vicente lópez              4
 8 villa elisa                4
 9 guaymallen                 3
10 lomas de zamora            3
# ℹ 85 more rows

Convivencia

data_normalizada %>% 
  group_by(`Cuál es su situación de convivencia?`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cuál es su situación de convivencia? Conteo Porcentaje
Vivo con mi pareja 75 40.5405405
Vivo solo/a 70 37.8378378
Vivo con otros familiares 28 15.1351351
NA 4 2.1621622
Con mi hija y su pareja 1 0.5405405
Esposo 1 0.5405405
Mi hijo 1 0.5405405
Otras opciones de convivencia 1 0.5405405
Vivo con una de mis hija 1 0.5405405
Vivo no todos los días con mi hija 1 0.5405405
con mi pareja y nuestra hija de 12 años 1 0.5405405
semiconvivencia con mi pareja 1 0.5405405
#Apertura

haberes

data_normalizada %>% 
  group_by(`Percibe haberes previsionales? (jubilación, pensión, PUAM)`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Percibe haberes previsionales? (jubilación, pensión, PUAM) Conteo Porcentaje
165 89.18919
No 20 10.81081
data_normalizada %>% 
  group_by(`En caso de haber contestado afirmativamente la pregunta anterior, cree que sus ingresos son:`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
En caso de haber contestado afirmativamente la pregunta anterior, cree que sus ingresos son: Conteo Porcentaje
Insuficientes 90 48.64865
Medianamente suficientes 54 29.18919
Suficientes 23 12.43243
NA 18 9.72973

derechos

data_normalizada %>% 
  group_by(`En una escala que va de 1 a 5, en qué grado siente usted que como persona mayor sus derechos son respetados? Donde 1 es nada respetados y 5 muy respetados.`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
En una escala que va de 1 a 5, en qué grado siente usted que como persona mayor sus derechos son respetados? Donde 1 es nada respetados y 5 muy respetados. Conteo Porcentaje
3 68 36.756757
2 50 27.027027
1 34 18.378378
4 27 14.594595
5 6 3.243243

Decision

data_normalizada %>% 
  group_by(`En una escala de 1 a 5, cuánto siente usted que decide en sus problemas cotidianos?`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
En una escala de 1 a 5, cuánto siente usted que decide en sus problemas cotidianos? Conteo Porcentaje
5 93 50.270270
4 47 25.405405
3 26 14.054054
2 15 8.108108
1 4 2.162162

vivienda

data_normalizada %>% 
  group_by(`En una escala de 1 a 5, en qué medida siente que su vivienda se ajusta a sus necesidades actuales?`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
En una escala de 1 a 5, en qué medida siente que su vivienda se ajusta a sus necesidades actuales? Conteo Porcentaje
5 85 45.945946
4 55 29.729730
3 33 17.837838
1 7 3.783784
2 5 2.702703

Salud

data_normalizada %>% 
  group_by(`Cree que su situación de salud en el último año ha`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cree que su situación de salud en el último año ha Conteo Porcentaje
Empeorado 94 50.81081
Mejorado 59 31.89189
NA 32 17.29730

futuro

data_normalizada %>% 
  group_by(`Cómo cree que va a estar su vida en un año?`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cómo cree que va a estar su vida en un año? Conteo Porcentaje
Peor 107 57.8378378
Sin cambios 56 30.2702703
Mejor 21 11.3513514
NA 1 0.5405405

escenas

enfermedad

data_normalizada %>% 
  group_by(`Cuál es su grado de preocupación con los siguientes problemas? [Enfermedad]`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cuál es su grado de preocupación con los siguientes problemas? [Enfermedad] Conteo Porcentaje
Me preocupa 122 65.945946
Me preocupa mucho 32 17.297297
No me preocupa 19 10.270270
NA 12 6.486486
data_normalizada %>% 
  group_by(`Cuál es su grado de preocupación con los siguientes problemas? [Postración]`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cuál es su grado de preocupación con los siguientes problemas? [Postración] Conteo Porcentaje
Me preocupa 60 32.43243
Me preocupa mucho 44 23.78378
NA 43 23.24324
No me preocupa 38 20.54054
data_normalizada %>% 
  group_by(`Cuál es su grado de preocupación con los siguientes problemas? [Muerte]`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cuál es su grado de preocupación con los siguientes problemas? [Muerte] Conteo Porcentaje
No me preocupa 68 36.756757
NA 57 30.810811
Me preocupa 45 24.324324
Me preocupa mucho 15 8.108108
data_normalizada %>% 
  group_by(`Cuál es su grado de preocupación con los siguientes problemas? [Fuertes limitaciones económicas]`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cuál es su grado de preocupación con los siguientes problemas? [Fuertes limitaciones económicas] Conteo Porcentaje
Me preocupa 98 52.97297
Me preocupa mucho 50 27.02703
NA 19 10.27027
No me preocupa 18 9.72973
data_normalizada %>% 
  group_by(`Cuál es su grado de preocupación con los siguientes problemas? [Falta de soluciones a los problemas de las personas jubiladas]`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cuál es su grado de preocupación con los siguientes problemas? [Falta de soluciones a los problemas de las personas jubiladas] Conteo Porcentaje
Me preocupa mucho 95 51.351351
Me preocupa 74 40.000000
No me preocupa 9 4.864865
NA 7 3.783784
data_normalizada %>% 
  group_by(`Cuál es su grado de preocupación con los siguientes problemas? [El futuro de sus familiares]`) %>% 
  summarise(Conteo = n()) %>%
  mutate(Porcentaje = Conteo / sum(Conteo) * 100) %>% 
  arrange(desc(Conteo)) %>% 
  gt()
Cuál es su grado de preocupación con los siguientes problemas? [El futuro de sus familiares] Conteo Porcentaje
Me preocupa 85 45.94595
Me preocupa mucho 60 32.43243
No me preocupa 21 11.35135
NA 19 10.27027

cuidados requeridos

# Suponiendo que data_normalizada es tu dataframe y que las respuestas están en la columna con la pregunta
resultados<-data_normalizada %>%
  separate_rows(`En el  caso de requerirlos ¿Qué tipo de cuidados usted demanda? Puede elegir más de una opción.`, sep = ",") %>% 
  mutate(cuidado = trimws(`En el  caso de requerirlos ¿Qué tipo de cuidados usted demanda? Puede elegir más de una opción.`)) %>% 
  group_by(cuidado) %>%
  filter(!is.na(cuidado)) %>% 
  summarise(n = n()) %>%
mutate(porcentaje = round((n / sum(n)) * 100, 2))

library(ggplot2)

resultados %>% 
ggplot(aes(x = reorder(cuidado, +porcentaje), y = porcentaje)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "Porcentaje de cada tipo de cuidado demandado", x = "Tipo de cuidado", y = "Porcentaje") +
  theme_minimal() +
  coord_flip()  # Opcional: voltea el gráfico si tienes muchas categorías

# Suponiendo que data_normalizada es tu dataframe y que las respuestas están en la columna con la pregunta
resultados<-data_normalizada %>%
  separate_rows(`En el  caso de requerirlos ¿Qué tipo de cuidados usted demanda? Puede elegir más de una opción.`, sep = ",") %>% 
  mutate(cuidado = trimws(`En el  caso de requerirlos ¿Qué tipo de cuidados usted demanda? Puede elegir más de una opción.`)) %>% 
  group_by(cuidado) %>%
  filter(!is.na(cuidado)) %>% 
  summarise(n = n()) %>%
mutate(porcentaje = round((n / sum(n)) * 100, 2))

library(ggplot2)

resultados %>% 
ggplot(aes(x = reorder(cuidado, +porcentaje), y = porcentaje)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "Porcentaje de cada tipo de cuidado demandado", x = "Tipo de cuidado", y = "Porcentaje") +
   geom_text(aes(label = paste0(porcentaje, "%")), 
            vjust = 0.5, hjust = -0.1, size = 3.5) +
  theme_minimal() +
  coord_flip()  # Opcional: voltea el gráfico si tienes muchas categorías

cuidados por edad

library(dplyr)
library(tidyr)
library(ggplot2)

# Calcular los porcentajes por tipo de cuidado y grupo de edad
resultados <- data_normalizada %>%
  separate_rows(`En el  caso de requerirlos ¿Qué tipo de cuidados usted demanda? Puede elegir más de una opción.`, sep = ",") %>% 
  mutate(cuidado = trimws(`En el  caso de requerirlos ¿Qué tipo de cuidados usted demanda? Puede elegir más de una opción.`)) %>%
  filter(!is.na(cuidado), !is.na(Segmento_Edad)) %>%  # Asegurarse de eliminar NAs
  group_by(cuidado, Segmento_Edad) %>%
  summarise(n = n()) %>%
  mutate(porcentaje = round((n / sum(n)) * 100, 2)) %>%  # Calcular el porcentaje
  ungroup()
`summarise()` has grouped output by 'cuidado'. You can override using the
`.groups` argument.
ggplot(resultados, aes(x = reorder(cuidado, porcentaje), y = porcentaje, fill = Segmento_Edad)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = paste0(round(porcentaje, 1), "%")), 
            vjust = -0.3, size = 3) +  # Coloca las etiquetas arriba de las barras
  labs(title = "Porcentaje de cuidados demandados por grupo de edad", 
       x = "Tipo de cuidado", y = "Porcentaje") +
  theme_minimal() +
  facet_wrap(~ Segmento_Edad, scales = "free_y") +  # Facetas con escalas independientes
  theme(
    legend.position = "none",  # Eliminar leyenda
    strip.text = element_text(size = 10),  # Tamaño del título de las facetas
    axis.text.x = element_text(angle = 45, hjust = 1, size = 8),  # Rotar etiquetas 45 grados
    axis.text.y = element_text(size = 8),  # Tamaño de los textos en el eje Y
    panel.spacing = unit(1, "lines")  # Espacio entre facetas
  )

cambios

# Suponiendo que data_normalizada es tu dataframe y que las respuestas están en la columna con la pregunta
resultados<-data_normalizada %>%
  separate_rows(`Indique en qué campos, de los que se detallan a continuación, resulta necesario realizar cambios para mejorar la calidad de vida de las personas mayores (puede ser más de una opción)`, sep = ",") %>% 
  mutate(cambios = trimws(`Indique en qué campos, de los que se detallan a continuación, resulta necesario realizar cambios para mejorar la calidad de vida de las personas mayores (puede ser más de una opción)`)) %>% 
  group_by(cambios) %>%
  filter(!is.na(cambios)) %>% 
  summarise(n = n()) %>%
mutate(porcentaje = round((n / sum(n)) * 100, 2)) %>% 
  filter(porcentaje>5)

library(ggplot2)

resultados %>% 
ggplot(aes(x = reorder(cambios, +porcentaje), y = porcentaje)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "Campos en los que los adultos mayores creen que es necesario realizar cambios",
       x = "Cambios esperados", y = "Porcentaje") +
   geom_text(aes(label = paste0(porcentaje, "%")), 
            vjust = 0.5, hjust = -0.1, size = 3.5) +
  theme_minimal() +
  coord_flip()  # Opcional: voltea el gráfico si tienes muchas categorías

# Suponiendo que data_normalizada es tu dataframe y que las respuestas están en la columna con la pregunta
resultados<-data_normalizada %>%
  separate_rows(`De la siguiente lista ¿Qué derechos siente que en general no son respetados por los demás? Puede elegir más de una opción.`, sep = ",") %>% 
  mutate(derechos = trimws(`De la siguiente lista ¿Qué derechos siente que en general no son respetados por los demás? Puede elegir más de una opción.`)) %>% 
  group_by(derechos) %>%
  filter(!is.na(derechos)) %>% 
  summarise(n = n()) %>%
mutate(porcentaje = round((n / sum(n)) * 100, 2)) %>% 
  filter(porcentaje>5)

library(ggplot2)

resultados %>% 
ggplot(aes(x = reorder(derechos, +porcentaje), y = porcentaje)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "Percepción de derechos vulnerados",
       x = "derechos", y = "Porcentaje") +
   geom_text(aes(label = paste0(porcentaje, "%")), 
            vjust = 0.5, hjust = -0.1, size = 3.5) +
  theme_minimal() +
  coord_flip()  # Opcional: voltea el gráfico si tienes muchas categorías