📚 Librería

library(readxl)
library(glue)
library(dplyr)
library(janitor)
library(knitr)
library(kableExtra)
library(ggplot2)
library(ggraph)
library(igraph)
library(treemapify)

📥 Importar datos

datos <- read_excel("//Users/adrianaholguin/Desktop/Copia de Categorías entrevistas 1.xlsx")

❓Preguntas de investigación


``` r
pregunta_general <- "¿Qué relación existe entre la participación en un voluntariado curricular y el desarrollo de conductas prosociales en estudiantes universitarios?"
pregunta_cualitativa <- "¿Qué cambios en la prosocialidad son reportados por los estudiantes universitarios después de su participación en el voluntariado curricular?"

glue("
### ❓Preguntas de investigación

**Pregunta General**  
{pregunta_general}

**Pregunta Cualitativa**  
{pregunta_cualitativa}
")

❓Preguntas de investigación

Pregunta General
¿Qué relación existe entre la participación en un voluntariado curricular y el desarrollo de conductas prosociales en estudiantes universitarios?

Pregunta Cualitativa
¿Qué cambios en la prosocialidad son reportados por los estudiantes universitarios después de su participación en el voluntariado curricular?

🗂 Tablas de frecuencia de categorías y subcategorías

# Tabla de frecuencia por categoría
tabla_frecuencia <- datos %>%
  count(Categoria, name = "Frecuencia") %>%
  arrange(desc(Frecuencia))

# Mostrar tabla con formato APA
tabla_frecuencia %>%
  kable(format = "html", align = "c", caption = "Tabla 1.\nFrecuencia de categorías interpretativas") %>%
  kable_styling(full_width = FALSE, font_size = 14) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1, width = "8cm") %>%
  column_spec(2, width = "3cm")
Tabla 1. Frecuencia de categorías interpretativas
Categoria Frecuencia
Prosocial 42
Sociabilizacion 28
Ayudar 25
Compartir 20
Empatia 20
# Filtrar por categoría (Ayudar)
ayudar <- datos %>% 
  filter(Categoria == "Ayudar") %>% 
  select(Sujeto, Nivel, Subcategoria, Frase)

# Tabla de recurrencias por subcategoría
tabla_ayudar <- ayudar %>% 
  group_by(Subcategoria) %>% 
  summarise(Recurrencias = n(), .groups = "drop") %>% 
  arrange(desc(Recurrencias))
  
  # Filtrar por categoría (Compartir)
compartir <- datos %>% 
  filter(Categoria == "Compartir") %>% 
  select(Sujeto, Nivel, Subcategoria, Frase)

# Tabla de recurrencias por subcategoría
tabla_compartir <- compartir %>% 
  group_by(Subcategoria) %>% 
  summarise(Recurrencias = n(), .groups = "drop") %>% 
  arrange(desc(Recurrencias))
  
  # Filtrar por categoría (Empatia)
empatia <- datos %>% 
  filter(Categoria == "Empatia") %>% 
  select(Sujeto, Nivel, Subcategoria, Frase)

# Tabla de recurrencias por subcategoría
tabla_empatia <- empatia %>% 
  group_by(Subcategoria) %>% 
  summarise(Recurrencias = n(), .groups = "drop") %>% 
  arrange(desc(Recurrencias))
  
  # Filtrar por categoría (Prosocial)
prosocial <- datos %>% 
  filter(Categoria == "Prosocial") %>% 
  select(Sujeto, Nivel, Subcategoria, Frase)

# Tabla de recurrencias por subcategoría
tabla_prosocial <- prosocial %>% 
  group_by(Subcategoria) %>% 
  summarise(Recurrencias = n(), .groups = "drop") %>% 
  arrange(desc(Recurrencias))
  
  # Filtrar por categoría (Sociabilizacion)
Sociabilizacion <- datos %>% 
  filter(Categoria == "Sociabilizacion") %>% 
  select(Sujeto, Nivel, Subcategoria, Frase)

# Tabla de recurrencias por subcategoría
tabla_Sociabilizacion <- Sociabilizacion %>% 
  group_by(Subcategoria) %>% 
  summarise(Recurrencias = n(), .groups = "drop") %>% 
  arrange(desc(Recurrencias))

# Mostrar tabla Ayudar
tabla_ayudar %>% 
  kable(format = "html", caption = "Tabla 1.1. Recurrencias por subcategoría en la categoría 'Ayudar'", align = "l") %>% 
  kable_styling(full_width = FALSE, position = "left", font_size = 12)
Tabla 1.1. Recurrencias por subcategoría en la categoría ‘Ayudar’
Subcategoria Recurrencias
Familia-ayuda 9
Ayuda desinteresada 7
Ayuda interesada 5
Ayuda como integracion social 2
Ayuda sensible a la vulnerabilidad 1
Disponibilidad a ayudar 1
# Mostrar tabla Compartir
tabla_compartir %>% 
  kable(format = "html", caption = "Tabla 1.2. Recurrencias por subcategoría en la categoría 'Compartir'", align = "l") %>% 
  kable_styling(full_width = FALSE, position = "left", font_size = 12)
Tabla 1.2. Recurrencias por subcategoría en la categoría ‘Compartir’
Subcategoria Recurrencias
Compartir desinteresado 9
Compartir reciproco 4
Familia-compartir 4
Compartir interesado 3
# Mostrar tabla Empatía
tabla_empatia %>% 
  kable(format = "html", caption = "Tabla 1.3. Recurrencias por subcategoría en la categoría 'Empatía'", align = "l") %>% 
  kable_styling(full_width = FALSE, position = "left", font_size = 12)
Tabla 1.3. Recurrencias por subcategoría en la categoría ‘Empatía’
Subcategoria Recurrencias
Empatia desde el otro 11
Empatia desde el yo 9
# Mostrar tabla Prosocial
tabla_prosocial %>% 
  kable(format = "html", caption = "Tabla 1.4. Recurrencias por subcategoría en la categoría 'Prosocial'", align = "l") %>% 
  kable_styling(full_width = FALSE, position = "left", font_size = 12)
Tabla 1.4. Recurrencias por subcategoría en la categoría ‘Prosocial’
Subcategoria Recurrencias
Accion prosocial 7
Falta de prosocialidad 6
Motivacion prosocial 6
Prosocialidad comunitaria 5
Contradiccion de prosocialidad 4
Negacion de prosocialidad 4
Familia-prosocialidad 3
Prosocialidad obligada 3
Aprendizaje prosocial 2
Prosocialidad crítica 1
Prosocialidad resignificada 1
# Mostrar tabla Sociabilización
tabla_Sociabilizacion %>% 
  kable(format = "html", caption = "Tabla 1.5. Recurrencias por subcategoría en la categoría 'Sociabilización'", align = "l") %>% 
  kable_styling(full_width = FALSE, position = "left", font_size = 12)
Tabla 1.5. Recurrencias por subcategoría en la categoría ‘Sociabilización’
Subcategoria Recurrencias
Apertura progresiva 9
Gestos de conexión 7
Sociabilidad como bienestar 7
Sociabilizacion selectiva 4
Sociabilidad aprendida 1

🗺 Mapa jerárquico de categorías y subcategorías

# Datos con categorías, subcategorías y recurrencias
tabla_subcategorias <- data.frame(
  Categoria = c(
    rep("Ayudar", 9),
    rep("Compartir", 4),
    rep("Empatía", 2),
    rep("Prosocial", 11),
    rep("Sociabilización", 5)
  ),
  Subcategoria = c(
    # Ayudar
    "Ayuda desinteresada", "Familia-ayuda", "Disponibilidad a ayudar", "Ayuda interesada",
    "Ayuda como integración social", "Ayuda recíproca", "Ayuda sensible a la vulnerabilidad",
    "Recibir ayuda", "Significación emergente de ayuda",
    # Compartir
    "Compartir desinteresado", "Familia-compartir", "Compartir interesado", "Compartir recíproco",
    # Empatía
    "Empatía desde el yo", "Empatía desde el otro",
    # Prosocial
    "Acción prosocial", "Falta de prosocialidad", "Motivación prosocial", "Prosocialidad comunitaria",
    "Contradicción de prosocialidad", "Negación de prosocialidad", "Familia-prosocialidad",
    "Prosocialidad obligada", "Aprendizaje prosocial", "Prosocialidad crítica", "Prosocialidad resignificada",
    # Sociabilización
    "Apertura progresiva", "Gestos de conexión", "Sociabilidad como bienestar",
    "Sociabilización selectiva", "Sociabilidad aprendida"
  ),
  Recurrencias = c(
    # Ayudar
    14, 13, 6, 4, 2, 2, 1, 1, 1,
    # Compartir
    10, 4, 3, 2,
    # Empatía
    11, 8,
    # Prosocial
    7, 6, 6, 5, 4, 4, 3, 3, 2, 1, 1,
    # Sociabilización
    9, 7, 7, 4, 1
  )
)

# Treemap jerárquico
ggplot(tabla_subcategorias,
       aes(area = Recurrencias, 
           fill = Categoria,
           label = Subcategoria,
           subgroup = Categoria)) +
  geom_treemap() +
  geom_treemap_subgroup_border(color = "white", size = 2) +
  geom_treemap_subgroup_text(place = "centre", grow = TRUE, alpha = 0.3, colour = "black", fontface = "bold") +
  geom_treemap_text(colour = "white", place = "centre", grow = TRUE) +
  scale_fill_brewer(palette = "Set2") +
  labs(title = "Gráfico 2. Mapa jerárquico de categorías y subcategorías")

👤 Gráfico de fraes por sujeto divididas por categorías

# Crear variable de grupo de prosocialidad
datos <- datos %>% 
  mutate(Grupo_prosocialidad = case_when(
    Sujeto %in% c("S1", "S2", "S3") ~ "Baja",
    Sujeto %in% c("S4", "S5", "S6") ~ "Alta",
    TRUE ~ "Otro"
  ))

# Contar frases por sujeto y categoría
tabla_apilada <- datos %>% 
  group_by(Sujeto, Categoria, Grupo_prosocialidad) %>% 
  summarise(Recurrencias = n(), .groups = "drop")

# Definir colores por grupo
colores_grupo <- c("Alta" = "#1f77b4", "Baja" = "#2ca02c", "Otro" = "#aaaaaa")

# Gráfico de barras apiladas con color por grupo
ggplot(tabla_apilada, aes(x = reorder(Sujeto, -Recurrencias), y = Recurrencias, fill = Categoria)) +
  geom_bar(stat = "identity", aes(color = Grupo_prosocialidad), size = 0.8) +
  scale_color_manual(values = colores_grupo) +
  labs(title = "Gráfico 3. Frases por sujeto divididas por categorías",
       subtitle = "Borde de color según grupo de prosocialidad",
       x = "Sujeto", y = "Número de frases", fill = "Categoría", color = "Grupo de prosocialidad") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(face = "bold", size = 14),
        axis.text = element_text(size = 10),
        axis.title = element_text(size = 12))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

📍 Comparativo de subcategorías según nivel de prosocialidad

datos <- datos %>% 
  mutate(Nivel_discursivo = ifelse(Sujeto %in% c("S1", "S2", "S3"), "Bajo", "Alto"))

# Contar recurrencias por nivel y subcategoría
tabla_subcategorias <- datos %>% 
  group_by(Subcategoria, Nivel_discursivo) %>% 
  summarise(Recurrencias = n(), .groups = "drop")

# Gráfico de barras comparativo con subcategorías legibles
ggplot(tabla_subcategorias, aes(x = reorder(Subcategoria, Recurrencias), 
                                y = Recurrencias, fill = Nivel_discursivo)) +
  geom_bar(stat = "identity", position = "dodge") +
  coord_flip() +   
  labs(title = "Gráfico 4. Subcategorías según nivel de prosocialidad",
       x = "Subcategoría", y = "Número de frases", fill = "Nivel de prosocialidad") +
  theme_minimal() +
  theme(axis.text.y = element_text(size = 10),  
        plot.title = element_text(face = "bold", size = 14),
        axis.text = element_text(size = 10),
        axis.title = element_text(size = 12))