CARGA DE DATOS
library(dplyr)
library(stringr)
library(gt)
library(readxl)
datos <- read.csv("D:/tipo_rasgo_geologico_2500.csv")
ASIGNACION DE VARIABLES
df_rasgo <- data.frame(
rasgo = toupper(trimws(datos$TIPO_DE_RASGO_GEOLOGICO))
)
df_rasgo$rasgo <- case_when(
# --- RASGO MENOR ---
df_rasgo$rasgo %in% c(
"FRACTURAS",
"DIACLASAS",
"VENILLAS SECUNDARIAS",
"DISEMINACIÓN MINERAL",
"TEXTURA PORFÍDICA",
"TEXTURA GRANULAR",
"BANDEAMIENTO LOCAL",
"MICROFRACTURAS",
"MINERALES ACCESORIOS VISIBLES"
) ~ "Rasgo menor",
# --- RASGO INTERMEDIO ---
df_rasgo$rasgo %in% c(
"FALLA LOCAL",
"ZONA DE CIZALLA",
"CONTACTO LITOLÓGICO",
"INTRUSIÓN LOCAL",
"DIQUE",
"SILL",
"VETA PRINCIPAL",
"ZONA MINERALIZADA",
"BRECHA HIDROTERMAL",
"STOCKWORK"
) ~ "Rasgo intermedio",
# --- RASGO MAYOR ---
df_rasgo$rasgo %in% c(
"PROVINCIA GEOLÓGICA",
"CINTURÓN MINERALIZADO",
"SISTEMA DE FALLAS REGIONALES",
"ARCO MAGMÁTICO",
"BATOLITO O CUERPO INTRUSIVO REGIONAL",
"TERRENO TECTÓNICO",
"CUENCA GEOLÓGICA",
"ZONA ESTRUCTURAL PRINCIPAL"
) ~ "Rasgo mayor",
# --- OTROS ---
TRUE ~ "Otros"
)
# Definición de orden incluyendo "Otros" al final
orden_rasgo <- c(
"Rasgo menor",
"Rasgo intermedio",
"Rasgo mayor",
"Otros"
)
df_rasgo$rasgo <- factor(
df_rasgo$rasgo,
levels = orden_rasgo,
ordered = TRUE
)
TABLA DE DISTRIBUCION DE CANTIDAD
TDF_rasgo <- df_rasgo %>%
count(rasgo, name = "ni") %>%
arrange(rasgo)
# Cálculo inicial de porcentajes
TDF_rasgo <- TDF_rasgo %>%
mutate(hi = round(ni / sum(ni) * 100, 0))
# Ajuste matemático automático por redondeo para asegurar el 100%
diferencia <- 100 - sum(TDF_rasgo$hi, na.rm = TRUE)
if (diferencia != 0 & nrow(TDF_rasgo) > 0) {
pos_max <- which.max(TDF_rasgo$ni)
TDF_rasgo$hi[pos_max] <-
TDF_rasgo$hi[pos_max] + diferencia
}
tabla_rasgo <- TDF_rasgo %>%
gt() %>%
tab_header(
title = "Tabla N° 1",
subtitle = "Distribución del Tipo de Rasgo Geológico"
) %>%
grand_summary_rows(
columns = c(ni, hi),
fns = list(Total = ~sum(., na.rm = TRUE)),
fmt = list(~fmt_number(., decimals = 0))
)
tabla_rasgo
| Tabla N° 1 | |||
| Distribución del Tipo de Rasgo Geológico | |||
| rasgo | ni | hi | |
|---|---|---|---|
| Rasgo menor | 987 | 39 | |
| Rasgo intermedio | 1130 | 46 | |
| Rasgo mayor | 383 | 15 | |
| Total | — | 2,500 | 100 |
# Agregamos fila TOTAL
tabla_final_rasgo <- TDF_rasgo %>%
mutate(
rasgo = as.character(rasgo)
)
tabla_final_rasgo <- bind_rows(
tabla_final_rasgo,
data.frame(
rasgo = "TOTAL",
ni = sum(tabla_final_rasgo$ni),
hi = sum(tabla_final_rasgo$hi)
)
)
# TABLA ESQUELETO
tabla_rasgo_gt <- tabla_final_rasgo %>%
gt() %>%
tab_header(
title = md("**Tabla Nº2**"),
subtitle = md("Distribución ordinal del tipo de rasgo geológico")
) %>%
cols_label(
rasgo = "Tipo de Rasgo Geológico",
ni = "Frecuencia",
hi = "Porcentaje (%)"
) %>%
cols_align(
align = "center",
columns = everything()
) %>%
fmt_number(
columns = c(ni, hi),
decimals = 0
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = rasgo == "TOTAL"
)
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
)
tabla_rasgo_gt
| Tabla Nº2 | ||
| Distribución ordinal del tipo de rasgo geológico | ||
| Tipo de Rasgo Geológico | Frecuencia | Porcentaje (%) |
|---|---|---|
| Rasgo menor | 987 | 39 |
| Rasgo intermedio | 1,130 | 46 |
| Rasgo mayor | 383 | 15 |
| TOTAL | 2,500 | 100 |
| Autor: Grupo 2 | ||
# Se añade margen inferior extra para que los textos verticales no se corten
par(mar = c(8, 4, 4, 2))
# Gráfica Nº1: Frecuencia absoluta
barplot(TDF_rasgo$ni,
main = "Gráfica Nº1: Frecuencia del Tipo de Rasgo Geológico",
xlab = "",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDF_rasgo$rasgo,
cex.names = 0.75,
las = 2)
# Se añade margen inferior extra
par(mar = c(8, 4, 4, 2))
# Gráfica Nº2: Frecuencia absoluta ajustada
barplot(TDF_rasgo$ni,
main = "Gráfica Nº2: Frecuencia del Tipo de Rasgo Geológico (Escala Ajustada)",
xlab = "",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDF_rasgo$rasgo,
cex.names = 0.75,
las = 2,
ylim = c(0, max(TDF_rasgo$ni) * 1.2))
# Se añade margen inferior extra
par(mar = c(8, 4, 4, 2))
# Gráfica Nº3: Frecuencia relativa
barplot(TDF_rasgo$hi,
main = "Gráfica Nº3: Porcentaje del Tipo de Rasgo Geológico",
xlab = "",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDF_rasgo$rasgo,
cex.names = 0.75,
las = 2)
# Se añade margen inferior extra
par(mar = c(8, 4, 4, 2))
# Gráfica Nº4: Frecuencia relativa escala completa
barplot(TDF_rasgo$hi,
main = "Gráfica Nº4: Porcentaje del Tipo de Rasgo Geológico (Escala Completa)",
xlab = "",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDF_rasgo$rasgo,
cex.names = 0.75,
las = 2,
ylim = c(0, 100))
# Gráfico circular
par(mar = c(4, 4, 4, 10))
colores <- rainbow(length(TDF_rasgo$hi))
pie(TDF_rasgo$hi,
col = colores,
main = "Distribución del Tipo de Rasgo Geológico",
labels = NA)
legend("right",
legend = paste(TDF_rasgo$rasgo, TDF_rasgo$hi, "%"),
fill = colores,
title = "RASGOS",
bty = "o",
xpd = TRUE,
inset = c(-0.37, 0))
# Moda
moda_rasgo <- TDF_rasgo[TDF_rasgo$ni == max(TDF_rasgo$ni), ]
moda_rasgo
## rasgo ni hi
## 2 Rasgo intermedio 1130 46
# Mediana
TDF_rasgo <- TDF_rasgo %>%
mutate(Ni = cumsum(ni))
N <- sum(TDF_rasgo$ni)
mediana_rasgo <- TDF_rasgo %>%
filter(Ni >= N/2) %>%
slice(1)
mediana_rasgo
## rasgo ni hi Ni
## 1 Rasgo intermedio 1130 46 2117
#conclucion
"La variable tipo de rasgo geológico presenta categorías desde rasgos bajos hasta altos, y sus valores se concentran en rasgos intermedios. Lo cual favorece la exploración minera, ya que este tipo de rasgos suele asociarse a zonas con características geológicas propicias para la mineralización."
## [1] "La variable tipo de rasgo geológico presenta categorías desde rasgos bajos hasta altos, y sus valores se concentran en rasgos intermedios. Lo cual favorece la exploración minera, ya que este tipo de rasgos suele asociarse a zonas con características geológicas propicias para la mineralización."