# 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