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

)