── 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álidosdata$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-120data_filtrada <-subset(data, Edad_Limpiada >=60& Edad_Limpiada <=120)# Mostrar un resumen de la columna de edad después de la limpiezasummary(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 edaddata_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 edadhead(data_filtrada[, c("Edad_Limpiada", "Segmento_Edad")])
# Calcular los porcentajes por segmentodata_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 ggplot2ggplot(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énerodata_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éneroggplot(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 necesariaslibrary(dplyr)library(stringr)# Normalizar nombres de provinciasdata_normalizada <- data_filtrada %>%mutate(# Convertir todo a minúsculas y eliminar espacios extraProvincia =str_to_lower(str_trim(`En qué provincia argentina reside?`)),Localidad =str_to_lower(str_trim(`Y en qué localidad vive?`)) ) %>%# Unificar variantes comunesmutate(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 necesarioTRUE~ Provincia ),# Normalizar localidades con criterios similaresLocalidad =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 necesarioTRUE~ 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
# 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()
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 preguntaresultados<-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 preguntaresultados<-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 edadresultados <- 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 NAsgroup_by(cuidado, Segmento_Edad) %>%summarise(n =n()) %>%mutate(porcentaje =round((n /sum(n)) *100, 2)) %>%# Calcular el porcentajeungroup()
`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 barraslabs(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 independientestheme(legend.position ="none", # Eliminar leyendastrip.text =element_text(size =10), # Tamaño del título de las facetasaxis.text.x =element_text(angle =45, hjust =1, size =8), # Rotar etiquetas 45 gradosaxis.text.y =element_text(size =8), # Tamaño de los textos en el eje Ypanel.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 preguntaresultados<-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 preguntaresultados<-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