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)
)