##
## 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(stringr)
library(gt)
datos <- read.csv("D:/dataset_CMIO_geologico.csv")
df_deposito <- data.frame(deposito = toupper(trimws(datos$Deposit_Type)))
df_deposito$deposito <- case_when(
# Asignación jerárquica de los depósitos originales
toupper(df_deposito$deposito) %in% c("EPITHERMAL") ~ "Bajo",
toupper(df_deposito$deposito) %in% c("PORPHYRY", "VMS") ~ "Medio",
toupper(df_deposito$deposito) %in% c("SEDIMENT-HOSTED", "SKARN") ~ "Alto",
TRUE ~ NA_character_
)
# Definición del orden lógico ascendente para volverla ordinal
orden_deposit <- c(
"Bajo",
"Medio",
"Alto"
)
df_deposito$deposito <- factor(
df_deposito$deposito,
levels = orden_deposit,
ordered = TRUE
)
TDF_deposito <- df_deposito %>%
count(deposito, name = "ni") %>%
arrange(deposito)
# Cálculo de frecuencias relativas porcentuales
TDF_deposito <- TDF_deposito %>%
mutate(hi = round(ni / sum(ni) * 100, 0))
# Ajuste matemático para corregir errores de redondeo y forzar el 100%
diferencia <- 100 - sum(TDF_deposito$hi, na.rm = TRUE)
if (diferencia != 0 & nrow(TDF_deposito) > 0) {
pos_max <- which.max(TDF_deposito$ni)
TDF_deposito$hi[pos_max] <- TDF_deposito$hi[pos_max] + diferencia
}
# Creación de la tabla con sumatoria total en el pie
tabla_deposito <- TDF_deposito %>%
gt() %>%
tab_header(
title = "Tabla N° X",
subtitle = "Distribución del Tipo de Depósito (Agrupación Ordinal)"
) %>%
grand_summary_rows(
columns = c(ni, hi),
fns = list(Total = ~sum(., na.rm = TRUE)),
fmt = list(~fmt_number(., decimals = 0))
)
tabla_deposito
| Tabla N° X |
| Distribución del Tipo de Depósito (Agrupación Ordinal) |
|
deposito |
ni |
hi |
|
Bajo |
497 |
20 |
|
Medio |
1007 |
40 |
|
Alto |
996 |
40 |
| Total |
— |
2,500 |
100 |
# Gráfica Nº1: Frecuencia absoluta
barplot(TDF_deposito$ni,
main = "Gráfica Nº1: Frecuencia del Tipo de Depósito",
xlab = "Nivel de Depósito",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDF_deposito$deposito,
cex.names = 0.8,
las = 1)

# Gráfica Nº2: Frecuencia absoluta ajustada
barplot(TDF_deposito$ni,
main = "Gráfica Nº2: Frecuencia del Tipo de Depósito (Escala Ajustada)",
xlab = "Nivel de Depósito",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDF_deposito$deposito,
cex.names = 0.8,
las = 1,
ylim = c(0, max(TDF_deposito$ni) * 1.2))

# Gráfica Nº3: Frecuencia relativa
barplot(TDF_deposito$hi,
main = "Gráfica Nº3: Porcentaje del Tipo de Depósito",
xlab = "Nivel de Depósito",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDF_deposito$deposito,
cex.names = 0.8,
las = 1)

# Gráfica Nº4: Frecuencia relativa escala completa
barplot(TDF_deposito$hi,
main = "Gráfica Nº4: Porcentaje del Tipo de Depósito (Escala Completa)",
xlab = "Nivel de Depósito",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDF_deposito$deposito,
cex.names = 0.8,
las = 1,
ylim = c(0, 100))

# Gráfico circular
par(mar = c(4, 4, 4, 8))
colores <- rainbow(length(TDF_deposito$hi))
pie(TDF_deposito$hi,
col = colores,
main = "Distribución del Tipo de Depósito",
labels = NA)
legend("right",
legend = paste(TDF_deposito$deposito, TDF_deposito$hi, "%"),
fill = colores,
title = "NIVELES",
bty = "o",
xpd = TRUE,
inset = c(-0.25, 0))

# Moda
moda_deposito <- TDF_deposito[TDF_deposito$ni == max(TDF_deposito$ni), ]
moda_deposito
## deposito ni hi
## 2 Medio 1007 40
# Mediana
TDF_deposito <- TDF_deposito %>%
mutate(Ni = cumsum(ni))
N <- sum(TDF_deposito$ni)
mediana_deposito <- TDF_deposito %>%
filter(Ni >= N/2) %>%
slice(1)
mediana_deposito
## deposito ni hi Ni
## 1 Medio 1007 40 1504