# Cargar librerías
library(shiny)
library(ggplot2)
library(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
library(tidyr)
library(DT)
## 
## Adjuntando el paquete: 'DT'
## The following objects are masked from 'package:shiny':
## 
##     dataTableOutput, renderDataTable
library(scales)

# Cargar datos
data_clean <- read.csv("datos/global-data-on-sustainable-energy.csv")

# Renombrar columnas para facilitar su manejo
colnames(data_clean) <- gsub("\\.+", "_", colnames(data_clean))

# Limpieza inicial y filtrado de datos
data_clean <- data_clean %>%
  mutate(across(everything(), ~ replace_na(., 0))) %>%
  filter(
    !is.na(Year),
    Year > 1999 & Year <= 2020
  )

# Calcular variables adicionales
data_clean <- data_clean %>%
  mutate(
    Proporcion_Electricidad_Renovable = Electricity_from_renewables_TWh_ /
      (Electricity_from_fossil_fuels_TWh_ + Electricity_from_nuclear_TWh_ + Electricity_from_renewables_TWh_),
    Densidad_Energetica = Electricity_from_renewables_TWh_ / Land_Area_Km2_,
    Intensidad_de_Emisiones = Value_co2_emissions_kt_by_country / Primary_energy_consumption_per_capita_kWh_person_
  ) %>%
  # Filtrar valores extremos
  filter(
    !is.na(Proporcion_Electricidad_Renovable),
    !is.na(Densidad_Energetica),
    !is.na(Intensidad_de_Emisiones)
  ) %>%
  mutate(
    Region = case_when(
      Entity %in% c("Germany", "France", "Spain", "Italy", "United Kingdom") ~ "Europe",
      Entity %in% c("China", "Japan", "India") ~ "Asia",
      Entity %in% c("United States", "Canada") ~ "North America",
      TRUE ~ "Other"
    )
  )
# UI
ui <- fluidPage(
  titlePanel("Análisis de Energía Sostenible"),
  navbarPage(
    title = "Exploración de Datos",

    # Pestaña 1: Resumen de Datos
    tabPanel("Resumen de Datos",
      fluidRow(
        column(6, dataTableOutput("summaryTable")),
        column(6, plotOutput("summaryPlot"))
      )
    ),

    # Pestaña 2: Proporción de Electricidad Renovable
    tabPanel("Proporción de Electricidad Renovable",
      fluidRow(
        column(6, plotOutput("renewablePlot")),
        column(6, textOutput("renewableSummary"))
      )
    ),

    # Pestaña 3: Intensidad de Emisiones
    tabPanel("Intensidad de Emisiones",
      fluidRow(
        column(6, plotOutput("emissionIntensityPlot")),
        column(6, textOutput("emissionSummary"))
      )
    ),

    # Pestaña 4: Densidad Energética
    tabPanel("Densidad Energética",
      fluidRow(
        column(6, plotOutput("densityPlot")),
        column(6, textOutput("densitySummary"))
      )
    ),

    # Pestaña 5: Inversión por Cápita
    tabPanel("Inversión por Cápita",
      fluidRow(
        column(6, plotOutput("investmentPlot")),
        column(6, textOutput("investmentSummary"))
      )
    )
  )
)
# Server
server <- function(input, output) {
  # Tabla de Resumen
  output$summaryTable <- renderDataTable({
    data_clean %>%
      summarise(across(where(is.numeric), mean, na.rm = TRUE)) %>%
      round(2)
  })

  # Gráfico Resumen General
  output$summaryPlot <- renderPlot({
    ggplot(data_clean, aes(x = Year, y = Renewable_energy_share_in_the_total_final_energy_consumption_, color = Region)) +
      geom_smooth(se = FALSE) +
      labs(
        title = "Consumo de Energía Renovable por Año",
        x = "Año",
        y = "Proporción (%)"
      ) +
      theme_minimal()
  })

  # Proporción de Electricidad Renovable
  output$renewablePlot <- renderPlot({
    ggplot(data_clean, aes(x = Year, y = Proporcion_Electricidad_Renovable, color = Region)) +
      geom_smooth(se = FALSE, method = "loess") +
      labs(
        title = "Proporción de Electricidad Renovable por Región",
        x = "Año",
        y = "Proporción (%)"
      ) +
      theme_minimal()
  })

  output$renewableSummary <- renderText({
    "La proporción de electricidad renovable muestra una tendencia creciente en regiones como Europa, mientras que otras regiones presentan variabilidad según los años."
  })

  # Intensidad de Emisiones
  output$emissionIntensityPlot <- renderPlot({
    ggplot(data_clean, aes(x = Year, y = Intensidad_de_Emisiones, color = Region)) +
      geom_smooth(se = FALSE) +
      labs(
        title = "Intensidad de Emisiones por Región",
        x = "Año",
        y = "Intensidad de Emisiones (CO₂ por unidad de energía)"
      ) +
      theme_minimal()
  })

  output$emissionSummary <- renderText({
    "La intensidad de emisiones indica qué tan eficientes son las regiones en términos de consumo energético y emisiones de CO₂. Regiones con menores valores son más eficientes."
  })

  # Densidad Energética
  output$densityPlot <- renderPlot({
    ggplot(data_clean, aes(x = Year, y = Densidad_Energetica, color = Region)) +
      geom_smooth(se = FALSE, method = "loess") +
      scale_y_continuous(trans = "log10", labels = scales::comma) +
      labs(
        title = "Densidad Energética por Región",
        x = "Año",
        y = "Densidad Energética (TWh por Km²)"
      ) +
      theme_minimal()
  })

  output$densitySummary <- renderText({
    "La densidad energética es mayor en regiones como Europa debido a su combinación de generación de energía renovable y tamaño territorial reducido."
  })

  # Inversión por Cápita
  output$investmentPlot <- renderPlot({
    data_clean <- data_clean %>%
      mutate(Inversion_por_Capita = Financial_flows_to_developing_countries_US_ / Population)

    ggplot(data_clean, aes(x = Year, y = Inversion_por_Capita, color = Region)) +
      geom_smooth(se = FALSE, method = "loess") +
      scale_y_continuous(trans = "log10", labels = scales::comma) +
      labs(
        title = "Inversión por Cápita en Energías Renovables",
        x = "Año",
        y = "Inversión por Cápita (USD/persona, escala logarítmica)"
      ) +
      theme_minimal()
  })

  output$investmentSummary <- renderText({
    "La inversión per cápita muestra importantes diferencias entre regiones, destacando una mayor inversión en regiones desarrolladas."
  })
}

# Ejecutar la aplicación
shinyApp(ui = ui, server = server)
Shiny applications not supported in static R Markdown documents