# Cargar las bibliotecas necesarias
if (!require("ggplot2")) install.packages("ggplot2", dependencies=TRUE)
## Cargando paquete requerido: ggplot2
if (!require("dplyr")) install.packages("dplyr", dependencies=TRUE)
## Cargando paquete requerido: dplyr
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
if (!require("tidyr")) install.packages("tidyr", dependencies=TRUE)
## Cargando paquete requerido: tidyr
# Cargar las bibliotecas después de asegurarse de que están instaladas
library(ggplot2)
library(dplyr)
library(tidyr)
data <- read.csv(file.choose())
# Paso 1: Verificar los nombres exactos de las columnas
colnames(data) <- c("Marca_temporal", "Puntuacion", "Consentimiento", "Sexo", "Semestre", "Estudio", 
                    "Organizacion_tiempo", "Reglas_lim_autonomia", "Decisiones_sin_consulta", 
                    "Libertad_horarios", "Motivacion_estudio", "Decidir_materias", 
                    "Libertad_organizar_estudio", "Facilidad_ritmo_estudio", "Elegir_como_estudiar", 
                    "Factores_lim_autonomia", "Falta_independencia_decisiones", 
                    "Capacidad_desafios", "Confianza_capacidades", 
                    "Dependencia_academicas", "Superar_desafios_con_control", 
                    "Falta_independencia_decisiones_2", 
                    "Seguridad_clase", "Autonomia_aprendizaje", 
                    "Retroalimentacion_profesores", "Motivacion_mejorar_calificaciones")


# Paso 2: Transformar los datos a formato largo usando los nombres correctos
data_largo <- data %>%
  pivot_longer(cols = Organizacion_tiempo:Motivacion_mejorar_calificaciones, 
               names_to = "Pregunta", values_to = "Respuesta")

# Asegurarse de que la columna 'Respuesta' es numérica
data_largo$Respuesta <- as.numeric(data_largo$Respuesta)


# Paso 3: Asegurarse de que la columna 'Respuesta' es numérica
data_largo$Respuesta <- as.numeric(data_largo$Respuesta)

# Crear gráficos de pastel con porcentajes

# Lista de preguntas
preguntas <- unique(data_largo$Pregunta)

# Función para etiquetar porcentajes
etiquetas_porcentajes <- function(df) {
  df %>%
    group_by(Respuesta) %>%
    summarise(Conteo = n()) %>%
    mutate(Porcentaje = round(Conteo / sum(Conteo) * 100, 1),
           Etiqueta = paste0(Porcentaje, "%"))
}

# Iterar sobre cada pregunta para crear gráficos de pastel
for (pregunta in preguntas) {
  data_pregunta <- data_largo %>% filter(Pregunta == pregunta)
  
  # Calcular los porcentajes
  data_porcentajes <- etiquetas_porcentajes(data_pregunta)
  
  # Crear gráfico de pastel
  p <- ggplot(data_porcentajes, aes(x = "", y = Conteo, fill = factor(Respuesta))) +
    geom_bar(stat = "identity", width = 1) +
    coord_polar(theta = "y") +
    geom_text(aes(label = Etiqueta), position = position_stack(vjust = 0.5)) +
    scale_fill_brewer(palette = "Set3") +
    labs(title = paste("Distribución de Respuestas para", pregunta),
         fill = "Respuesta") +
    theme_void()
  
  print(p)
}