library(dplyr)
library(stringr)
library(gt)
library(readxl)
library(here)
library(readxl)
datos <- read.csv("D:/mineralogia_2500.csv")
# Extraer variable
df_mineralogia <- data.frame(
mineralogia = toupper(trimws(datos$MINERALOGIA))
)
# Reemplazar categorías
df_mineralogia$mineralogia <- case_when(
toupper(df_mineralogia$mineralogia) == "CUARZO" ~ "Cuarzo",
toupper(df_mineralogia$mineralogia) == "FELDESPATO" ~ "Feldespato",
toupper(df_mineralogia$mineralogia) == "BIOTITA" ~ "Biotita",
toupper(df_mineralogia$mineralogia) == "PLAGIOCLASA" ~ "Plagioclasa",
toupper(df_mineralogia$mineralogia) == "HORNBLENDA" ~ "Hornblenda",
TRUE ~ "Otros"
)
# Orden de categorías
orden_mineralogia <- c(
"Cuarzo",
"Feldespato",
"Biotita",
"Plagioclasa",
"Hornblenda",
"Otros"
)
# Convertir en factor ordenado
df_mineralogia$mineralogia <- factor(
df_mineralogia$mineralogia,
levels = orden_mineralogia
)
# Frecuencias y probabilidad
ni <- table(df_mineralogia$mineralogia)
hi <- round(prop.table(ni), 4)
P <- round(hi * 100, 2)
# Crear tabla base
tabla_finalmineralogia <- data.frame(
Mineralogia = names(ni),
ni = as.numeric(ni),
hi = as.numeric(hi),
P = as.numeric(P)
)
# Fila TOTAL
fila_total <- data.frame(
Mineralogia = "TOTAL",
ni = sum(tabla_finalmineralogia$ni),
hi = round(sum(tabla_finalmineralogia$hi), 4),
P = round(sum(tabla_finalmineralogia$P), 2)
)
# Mostrar
tabla_finalmineralogia <- rbind(tabla_finalmineralogia, fila_total)
tabla_finalmineralogia
## Mineralogia ni hi P
## 1 Cuarzo 720 0.288 28.8
## 2 Feldespato 610 0.244 24.4
## 3 Biotita 430 0.172 17.2
## 4 Plagioclasa 515 0.206 20.6
## 5 Hornblenda 225 0.090 9.0
## 6 Otros 0 0.000 0.0
## 7 TOTAL 2500 1.000 100.0
tabla_mineralogia_gt <- tabla_finalmineralogia %>%
gt() %>%
tab_header(
title = md("**Tabla N° 4**"),
subtitle = md("Distribución de probabilidad de la mineralogía presente en depósitos minerales")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black",
row.striping.include_table_body = TRUE
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Mineralogia == "TOTAL")
)
tabla_mineralogia_gt
| Tabla N° 4 |
| Distribución de probabilidad de la mineralogía presente en depósitos minerales |
| Mineralogia |
ni |
hi |
P |
| Cuarzo |
720 |
0.288 |
28.8 |
| Feldespato |
610 |
0.244 |
24.4 |
| Biotita |
430 |
0.172 |
17.2 |
| Plagioclasa |
515 |
0.206 |
20.6 |
| Hornblenda |
225 |
0.090 |
9.0 |
| Otros |
0 |
0.000 |
0.0 |
| TOTAL |
2500 |
1.000 |
100.0 |
| Autor: Grupo 2 |
# Extraer probabilidad (%) sin la fila TOTAL
P_global <- as.numeric(tabla_finalmineralogia$P[1:(nrow(tabla_finalmineralogia)-1)])
barplot(
P_global,
main = "Gráfica Nº4: Distribución de probabilidad de la\nmineralogía presente en depósitos minerales",
cex.main = 0.8,
xlab = "Mineralogía",
ylab = "Probabilidad (%)",
col = "blue",
names.arg = tabla_finalmineralogia$Mineralogia[1:(nrow(tabla_finalmineralogia)-1)],
cex.names = 0.9,
ylim = c(0, 100),
las = 1
)

# Eliminar fila TOTAL
tabla_sin_total <- tabla_finalmineralogia[
tabla_finalmineralogia$Mineralogia != "TOTAL",
]
# Extraer probabilidad de la categoría "Cuarzo"
prob_cuarzo <- tabla_sin_total$P[
tabla_sin_total$Mineralogia == "Cuarzo"
]
# Gráfico de texto explicativo
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(
x = 1, y = 1,
labels = paste(
"Cálculo de probabilidad\n(Estimación general)\n\n",
"¿Qué probabilidad existe de que un depósito\n",
"mineral analizado presente mineralogía de\n",
"tipo cuarzo?\n\n",
"Probabilidad = ", prob_cuarzo, " (%)",
sep = ""
),
cex = 1.3,
col = "black",
font = 2
)
