library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(gt)
library(readxl)
# ============================================================
# CARGAR EL ARCHIVO EXCEL
# (usa el nombre exacto de tu archivo)
datos_nuevoartes <- read_excel("datos_nuevoartes.xlsx")
datos_nuevoartes <- datos_nuevoartes %>%
  mutate(
    landslide_trigger_consol = case_when(
      
      landslide_trigger %in% c(
        "downpour", "rain", "continuous_rain", "monsoon"
      ) ~ "Precipitación",
      
      landslide_trigger %in% c(
        "snowfall_snowmelt", "freeze_thaw"
      ) ~ "Fenómenos de nieve/hielo",
      
      landslide_trigger %in% c(
        "earthquake", "volcano"
      ) ~ "Actividad geológica",
      
      landslide_trigger %in% c(
        "mining", "construction", "vibration", "leaking_pipe"
      ) ~ "Desencadenante humano",
      
      landslide_trigger %in% c(
        "flooding", "dam_embankment_collapse"
      ) ~ "Estructuras",
      
      landslide_trigger %in% c(
        "unknown", "no_apparent_trigger", "other"
      ) ~ "Otros desencadenantes",
      
      TRUE ~ NA_character_
    )
  )
tabla_trigger <- datos_nuevoartes %>%
  filter(!is.na(landslide_trigger_consol)) %>%
  group_by(landslide_trigger_consol) %>%
  summarise(ni = n(), .groups = "drop") %>%
  arrange(desc(ni)) %>%
  mutate(
    i = row_number(),
    hi = round((ni / sum(ni)) * 100, 2),
    i = as.character(i)
  ) %>%
  rename(Desencadenante = landslide_trigger_consol) %>%
  select(i, Desencadenante, ni, hi)
fila_total_trigger <- tibble(
  i = "SUMATORIA",
  Desencadenante = "TOTAL",
  ni = sum(tabla_trigger$ni),
  hi = round(sum(tabla_trigger$hi), 0)
)

tabla_trigger_final <- bind_rows(tabla_trigger, fila_total_trigger)
tabla_trigger_gt <- tabla_trigger_final %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° __**"),
    subtitle = md("**Frecuencia y porcentaje de desencadenantes de deslizamientos (categorías consolidadas)**")
  ) %>%
  tab_source_note(
    source_note = md(
      "Criterio de consolidación: similitud genética y dinámica del proceso desencadenante.  
       Autor: Alessandro"
    )
  )

tabla_trigger_gt
Tabla N° __
Frecuencia y porcentaje de desencadenantes de deslizamientos (categorías consolidadas)
i Desencadenante ni hi
1 Precipitación 8149 77.99
2 Otros desencadenantes 1761 16.85
3 Desencadenante humano 186 1.78
4 Fenómenos de nieve/hielo 176 1.68
5 Actividad geológica 90 0.86
6 Estructuras 87 0.83
SUMATORIA TOTAL 10449 100.00
Criterio de consolidación: similitud genética y dinámica del proceso desencadenante.
Autor: Alessandro
#============================
#  ORDEN LÓGICO PARA GRÁFICAS
#============================
orden_trigger <- c(
  "Precipitación",
  "Actividad geológica",
  "Estructuras",
  "Desencadenante humano",
  "Fenómenos de nieve/hielo",
  "Otros desencadenantes"
)

datos_nuevoartes <- datos_nuevoartes %>%
  mutate(
    landslide_trigger_consol = factor(
      landslide_trigger_consol,
      levels = orden_trigger
    )
  )
#============================
#GRÁFICA DE FRECUENCIA (ni)
#============================
ggplot(
  datos_nuevoartes %>% filter(!is.na(landslide_trigger_consol)),
  aes(x = landslide_trigger_consol)
) +
  geom_bar(fill = "skyblue", color = "black") +
  labs(
    title = "Distribución de los desencadenantes de movimientos en masa",
    x = "Tipo de desencadenante",
    y = "Frecuencia (ni)"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 30, hjust = 1)
  )

tabla_trigger_hi <- datos_nuevoartes %>%
  filter(!is.na(landslide_trigger_consol)) %>%
  group_by(landslide_trigger_consol) %>%
  summarise(ni = n(), .groups = "drop") %>%
  mutate(
    hi = round((ni / sum(ni)) * 100, 2)
  )

ggplot(tabla_trigger_hi,
       aes(x = landslide_trigger_consol, y = hi)) +
  geom_col(fill = "steelblue", color = "black") +
  geom_text(
    aes(label = paste0(hi, "%")),
    vjust = -0.4,
    size = 4
  ) +
  labs(
    title = "Porcentaje de ocurrencia por desencadenante",
    x = "Tipo de desencadenante",
    y = "Porcentaje (%)"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 30, hjust = 1)
  )