CARGA DE DATOS Y LIBRERIAS

CARGA DE DATOS Y LIBRERIAS

knitr::opts_chunk$set(
    echo = TRUE,                   # Muestra el código R en el reporte final.
    message = FALSE,
    warning = FALSE,               # Message y warning evitan que se impriman alertas o mensajes de carga estorbosos en el HTML.
    fig.align = "center"           # Centra automáticamente todas las gráficas generadas.
)

datos <- read.csv("C:/Users/USER/Documents/PROYECTO ESTADISTICA/CMDB_Data.csv", 
                  header = TRUE, # Indica que la primera fila contienen los nombres de las variables.
                  sep = ";",     # Define que los puntos y comas es el separador de las columnas del archivo.
                  dec = ".",     # Establece el punto como el operador decimal para los números.
                  fileEncoding = "latin1")

# Verificación inicial del set de datos
str(datos)
## 'data.frame':    1366 obs. of  103 variables:
##  $ ï..LAB_ID            : chr  "C355417" "C360759" "C360762" "C360763" ...
##  $ PREVIOUS_LAB_ID1     : chr  "" "" "" "" ...
##  $ PREVIOUS_LAB_ID2     : chr  "" "" "" "" ...
##  $ PREVIOUS_LAB_ID3     : chr  "" "" "" "" ...
##  $ FIELD_ID             : chr  "RM0001" "RM0027" "RM0030" "RM0031" ...
##  $ JOB_ID               : chr  "MRP11968" "MRP12307" "MRP12307" "MRP12307" ...
##  $ PREVIOUS_JOB_ID1     : chr  "" "" "" "" ...
##  $ PREVIOUS_JOB_ID2     : chr  "" "" "" "" ...
##  $ PREVIOUS_JOB_ID3     : chr  "" "" "" "" ...
##  $ SUBMITTER            : chr  "Rare Metals Task" "Rare Metals Task" "Rare Metals Task" "Rare Metals Task" ...
##  $ PROJECT_NAME         : chr  "Critical and Rare Metals" "Critical and Rare Metals" "Critical and Rare Metals" "Critical and Rare Metals" ...
##  $ DATE_SUBMITTED       : chr  "30/6/2011" "31/8/2011" "31/8/2011" "31/8/2011" ...
##  $ COLLECTION           : chr  "Mackay-Keck Ore Deposits Collection" "Mackay-Stanford Ore Deposits Collection" "Mackay-Stanford Ore Deposits Collection" "Mackay-Stanford Ore Deposits Collection" ...
##  $ COLLECTION_ID        : chr  "PHNC08_39_1183" "OD21441" "OD22811" "OD25716" ...
##  $ CONTINENT            : chr  "North America" "South America" "South America" "Africa" ...
##  $ COUNTRY              : chr  "United States" "Chile" "Chile" "South Africa" ...
##  $ STATE_PROVINCE       : chr  "Nevada" "Antofagasta" "Tarapacá" "Transvaal" ...
##  $ COUNTY               : chr  "Lyon" "El Loa" "El Tamarugal" "" ...
##  $ DISTRICT_NAME        : chr  "Yerington" "Chuquicamata" "Collahuasi/Quebrada Blanca" "" ...
##  $ DEPOSIT_NAME         : chr  "Pumpkin Hollow" "" "" "" ...
##  $ MINE_NAME            : chr  "Pumpkin Hollow" "Chuquicamata mine" "Collahuasi district" "" ...
##  $ DISTRICT_NAME_COLLECT: chr  "Yerington" "" "" "" ...
##  $ DEPOSIT_NAME_COLLECT : chr  "" "" "" "" ...
##  $ MINE_NAME_COLLECT    : chr  "Pumpkin Hollow" "Chuquicamata" "Poduosa mine" "Messina Mines Ltd." ...
##  $ LOCATE_DESC          : chr  "" "" "Level 25" "" ...
##  $ LATITUDE             : chr  "38,94021" "-22,2871" "-21,0309" "-24,7" ...
##  $ LONGITUDE            : chr  "-119,05178" "-68,8991" "-68,74951" "29,3" ...
##  $ DATUM                : chr  "WGS84" "WGS84" "WGS84" "" ...
##  $ LATITUDE_COLLECT     : chr  "38,92492" "22,28944" "" "" ...
##  $ LONGITUDE_COLLECT    : chr  "-119,1071" "-68,90111" "" "" ...
##  $ DATUM_COLLECT        : chr  "" "WGS84" "" "" ...
##  $ COORDINATES_QUAL     : chr  "100 m" "Exact" "" "" ...
##  $ COORDINATES_SOURCE   : chr  "1) iTouchMap.com, approx, A. Orkild-Norton; 2) Mineral Resource Deposit Database Deposit ID 10174173, ore body, M. Granitto" "1) Mindat.org, approx, A. Orkild-Norton; 2) Open-File Report 2017-1079 ID 549, mine, M. Granitto" "1) No coordinates; 2) Mineral Resource Deposit Database Deposit ID 10057511, district, M. Granitto" "1) No coordinates; 2) Google Earth Pro, approx ctr of former province of Transvaal, M. Granitto" ...
##  $ PRIMARY_CLASS        : chr  "rock" "rock" "rock" "rock" ...
##  $ SYSTEM_TYPE          : chr  "IOA-IOCG" "Porphyry Cu-Mo-Au" "Porphyry Cu-Mo-Au" "IOA-IOCG" ...
##  $ DEPOSIT_TYPE         : chr  "IOCG" "Supergene Cu" "Porphyry Cu" "IOCG" ...
##  $ SAMPLE_DESC          : chr  "Nearly solid chalcopyrite mixed with small light brown irregular inclusions of unknown mineralogy; clouds of ma"| __truncated__ "Chalcocite-bronchatite-antlerite(?); highly microfractured igneous rock with green copper sulfates coating microfractures" "Bornite-chalcopyrite; mostly massive chalcopyrite with numerous inclusions of micro-chalcopyrite and widely sca"| __truncated__ "Massive chalcopyrite, IOCG in shear zone; mostly massive fine grain cuprite with widely distributed malachite t"| __truncated__ ...
##  $ Al_pct_AES_ST        : chr  "0,33" "6,65" "0,46" "0,7" ...
##  $ Ca_pct_AES_ST        : chr  "1,1" "0,4" "-0,1" "0,3" ...
##  $ Fe_pct_AES_ST        : chr  "42,4" "0,25" "6,98" "27,8" ...
##  $ K_pct_AES_ST         : chr  "-0,1" "6,1" "0,2" "-0,1" ...
##  $ Mg_pct_AES_ST        : chr  "0,57" "0,1" "0,01" "0,33" ...
##  $ Mn_pct_AES_ST        : chr  "0,02" "-0,01" "-0,01" "-0,01" ...
##  $ P_pct_AES_ST         : chr  "-0,01" "0,01" "0,05" "0,01" ...
##  $ S_pct_AES_ST         : chr  "" "" "" "" ...
##  $ Si_pct_AES_ST        : chr  "" "" "" "" ...
##  $ Ti_pct_AES_ST        : chr  "0,01" "0,11" "-0,01" "-0,01" ...
##  $ F_pct_ISE_Fuse       : chr  "" "" "" "" ...
##  $ Ag_ppm_MS_ST         : chr  "58" "6" "468" "16" ...
##  $ As_ppm_MS_ST         : chr  "-30" "-30" "90" "-30" ...
##  $ Au_ppm               : chr  "" "" "" "" ...
##  $ Au_AM                : chr  "" "" "" "" ...
##  $ B_ppm_AES_ST         : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Ba_ppm_AES_ST        : chr  "-0,5" "924" "121" "174" ...
##  $ Be_ppm_AES_ST        : int  -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 ...
##  $ Bi_ppm_MS_ST         : chr  "1,5" "3,6" "190" "0,4" ...
##  $ Cd_ppm_MS_ST         : chr  "3,6" "-0,2" "0,9" "-0,2" ...
##  $ Ce_ppm_MS_ST         : chr  "0,4" "8,8" "16,3" "3,5" ...
##  $ Co_ppm_MS_ST         : chr  "209" "-0,5" "1,3" "44,8" ...
##  $ Cr_ppm_AES_ST        : int  -10 -10 -10 30 20 20 60 40 20 10 ...
##  $ Cs_ppm_MS_ST         : chr  "0,5" "1,4" "0,2" "-0,1" ...
##  $ Cu_ppm_AES_ST        : chr  "50000,11111" "23300" "50000,11111" "50000,11111" ...
##  $ Dy_ppm_MS_ST         : chr  "-0,05" "0,32" "1,38" "0,37" ...
##  $ Er_ppm_MS_ST         : chr  "-0,05" "0,22" "0,77" "0,23" ...
##  $ Eu_ppm_MS_ST         : chr  "-0,05" "0,14" "0,17" "0,1" ...
##  $ Ga_ppm_MS_ST         : chr  "5" "15" "6" "3" ...
##  $ Gd_ppm_MS_ST         : chr  "-0,05" "0,45" "1,5" "0,39" ...
##  $ Ge_ppm_MS_ST         : int  -1 5 -1 -1 3 8 8 1 2 2 ...
##  $ Hf_ppm_MS_ST         : int  -1 4 -1 -1 5 13 12 2 3 6 ...
##  $ Ho_ppm_MS_ST         : chr  "-0,05" "0,07" "0,25" "0,07" ...
##  $ In_ppm_MS_ST         : chr  "6,4" "-0,2" "3,7" "0,2" ...
##  $ La_ppm_MS_ST         : chr  "0,2" "4,6" "7,2" "1,7" ...
##  $ Li_ppm_AES_ST        : int  -10 -10 -10 -10 30 20 20 20 -10 20 ...
##  $ Lu_ppm_MS_ST         : chr  "-0,05" "-0,05" "0,08" "-0,05" ...
##  $ Mo_ppm_MS_ST         : chr  "-2" "60" "3" "2" ...
##  $ Nb_ppm_MS_ST         : chr  "-1" "4" "-1" "-1" ...
##  $ Nd_ppm_MS_ST         : chr  "0,2" "3,8" "9,1" "1,7" ...
##  $ Ni_ppm_AES_ST        : chr  "144" "6" "-5" "48" ...
##  $ Pb_ppm_MS_ST         : chr  "23" "16" "188" "39" ...
##  $ Pd_ppm_FA_MS         : chr  "" "" "" "" ...
##  $ Pr_ppm_MS_ST         : chr  "-0,05" "1,09" "2,21" "0,46" ...
##  $ Pt_ppm_FA_MS         : chr  "" "" "" "" ...
##  $ Rb_ppm_MS_ST         : chr  "1,2" "148" "7,1" "0,7" ...
##  $ Re_ppm_MS_HF         : chr  "" "" "" "" ...
##  $ Sb_ppm_MS_ST         : chr  "1,2" "2,4" "2,9" "0,3" ...
##  $ Sc_ppm_AES_ST        : int  -5 -5 -5 -5 11 6 15 10 5 6 ...
##  $ Se_ppm_MS_ST         : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Sm_ppm_MS_ST         : chr  "-0,1" "0,6" "1,6" "0,4" ...
##  $ Sn_ppm_MS_ST         : chr  "2" "3" "106" "-1" ...
##  $ Sr_ppm_AES_ST        : chr  "26,6" "114" "22,5" "38,4" ...
##  $ Ta_ppm_MS_ST         : chr  "-0,5" "-0,5" "-0,5" "-0,5" ...
##  $ Tb_ppm_MS_ST         : chr  "-0,05" "0,07" "0,23" "-0,05" ...
##  $ Te_ppm_MS_ST         : chr  "" "" "" "" ...
##  $ Th_ppm_MS_ST         : chr  "0,2" "9,7" "2,6" "0,2" ...
##  $ Tl_ppm_MS_ST         : chr  "-0,5" "0,5" "-0,5" "-0,5" ...
##  $ Tm_ppm_MS_ST         : chr  "-0,05" "-0,05" "0,08" "-0,05" ...
##  $ U_ppm_MS_ST          : chr  "0,3" "1,75" "0,63" "34,8" ...
##  $ V_ppm_AES_ST         : int  51 24 -5 493 68 20 40 159 39 61 ...
##  $ W_ppm_MS_ST          : chr  "-1" "28" "22" "11" ...
##   [list output truncated]

TABLA DE DISTRIBUCIÓN DE PROBABILIDAD

# Cargar las librerías necesarias
library(dplyr)
library(gt)

# 1. CREAR LA TABLA DE FRECUENCIAS Y RANGOS (TOP)
tabla_datum <- datos %>%
  # Reemplazar valores vacíos, espacios en blanco o NA por "no clasificado"
  mutate(DATUM = ifelse(is.na(DATUM) | trimws(DATUM) == "", "No clasificado", DATUM)) %>%
  count(DATUM, name = "ni") %>%
  mutate(
    hi = ni / sum(ni),
    P  = round(hi * 100, 2)
  ) %>%
  arrange(desc(ni)) %>%
  mutate(rank = row_number())

# 2. CREAR LA FILA DE TOTALES
total_datum <- data.frame(
  DATUM = "TOTAL",
  ni    = sum(tabla_datum$ni),
  hi    = NA, # Se omite el total en estas columnas para mayor rigor técnico
  P     = NA, 
  rank  = NA
)

# 3. UNIR TODO EN UNA SOLA TABLA FINAL
tabla_datum_final <- bind_rows(tabla_datum, total_datum)

# 4. GENERAR LA TABLA VISUAL
tabla_datum_gt <- tabla_datum_final %>%
  filter(rank <= 20 | is.na(rank)) %>% 
  select(-rank) %>%                    
  gt() %>%
  tab_header(
    title = md("**Tabla N° 2**"),      
    subtitle = md("Distribución de probabilidad por Datum")
  ) %>%
  tab_source_note(
    source_note = md("Autores: Grupo 1 <br> Semestre 2026 - 2026")
  ) %>%
  cols_label(
    DATUM = "Datum",                   
    ni    = "Frecuencia absoluta (ni)",
    hi    = "Frec. relativa",
    P     = "Probabilidad (%)"
  ) %>%
  fmt_number(columns = c(hi, P), decimals = 2) %>%
  fmt_number(columns = ni, decimals = 0) %>%
  sub_missing(columns = c(hi, P), missing_text = "") %>% # Deja las celdas NA completamente en blanco
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = DATUM == "TOTAL") 
  ) %>%
  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
  )

# Renderizar la tabla en el documento
tabla_datum_gt
Tabla N° 2
Distribución de probabilidad por Datum
Datum Frecuencia absoluta (ni) Frec. relativa Probabilidad (%)
WGS84 1,263 0.92 92.46
No clasificado 64 0.05 4.69
NAD27 39 0.03 2.86
TOTAL 1,366

Autores: Grupo 1
Semestre 2026 - 2026

GRÁFICAS DE DISTRIBUCIÓN DE PROBABILIDAD (DATUM)

# 1. PREPARAR DATOS PARA EL GRÁFICO (EXCLUIR TOTAL Y CREAR IDs)
# Usamos tabla_datum_final generada en el paso anterior
datum_plot <- tabla_datum_final %>%
  filter(DATUM != "TOTAL") %>%
  mutate(
    id = row_number(),
    etiqueta = paste0(id, ". ", DATUM)
  )

# 2. AJUSTAR LOS MÁRGENES DEL LIENZO
# Aumentamos el margen derecho (el cuarto número) para que entre la leyenda sin cortarse
par(mar = c(5, 5, 4, 12), xpd = TRUE)

# 3. DIBUJAR LA GRÁFICA DE BARRAS
barras_datum <- barplot(
  height    = datum_plot$P,            # Usamos la columna 'P' (Probabilidad en %)
  main      = "Gráfica N° 1: Distribución de probabilidad por Datum (%)",
  xlab      = "Datum (ID)",
  ylab      = "Probabilidad (%)",
  col       = "orchid",                # Mantenemos el color
  border    = NA,
  names.arg = datum_plot$id,           # Pone los números en el eje X
  cex.names = 1.0,
  las       = 1,                       # Números del eje Y horizontales
  ylim      = c(0, max(datum_plot$P, na.rm = TRUE) * 1.20) # 20% extra despacio arriba
)

# 4. COLOCAR PORCENTAJES ENCIMA DE LAS BARRAS
text(
  x      = barras_datum,               # Usa las coordenadas exactas de las barras
  y      = datum_plot$P + 2.5,         # Sube un poquito el texto
  labels = paste0(datum_plot$P, "%"),
  cex    = 0.85,
  col    = "black"
)

# 5. AGREGAR LA LEYENDA A LA DERECHA
legend(
  "topright",
  inset     = c(-0.55, 0),             # Empuja la leyenda hacia la derecha, fuera del gráfico
  legend    = datum_plot$etiqueta,
  fill      = "orchid",                # Muestra un cuadrito de color al lado del nombre
  border    = NA,
  bty       = "n",                     # Quita el recuadro negro alrededor de la leyenda
  cex       = 0.8
)

CÁLCULO DE PROBABILIDAD (DATUM)

# 1. IDENTIFICAR EL DATUM CON MAYOR PROBABILIDAD (excluyendo la fila de TOTAL)
# Usamos tabla_datum_final generada en los pasos anteriores
tabla_sin_total <- tabla_datum_final %>%
  filter(DATUM != "TOTAL")

# Encontrar el nombre del datum y su probabilidad máxima
datum_mayor <- tabla_sin_total$DATUM[which.max(tabla_sin_total$P)]
prob_mayor <- tabla_sin_total$P[which.max(tabla_sin_total$P)]

# 2. CONFIGURAR EL LIENZO DEL GRÁFICO DE TEXTO
par(mar = c(2, 2, 2, 2))  # Márgenes amplios para evitar cortes

# Crear un plot vacío (type = "n") sin ejes
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "", 
     xlim = c(0, 1), ylim = c(0, 1.1))

# 3. AGREGAR LOS TEXTOS AL LIENZO
# Título principal
text(
  x   = 0.5, 
  y   = 0.85, 
  labels = "DATUM CON MAYOR PROBABILIDAD\n(estimación muestral)", 
  cex = 1.6, 
  col = "navy", 
  font = 2, 
  adj = 0.5
)

# Pregunta explicativa (Adaptada a la variable cartográfica)
text(
  x   = 0.5, 
  y   = 0.60, 
  labels = paste0(
    "¿Qué sistema de referencia (Datum) es más probable\n", 
    "que se utilice para el registro de muestras a nivel mundial?\n"
  ), 
  cex = 1.3, 
  col = "black", 
  font = 1, 
  adj = 0.5
)

# Respuesta dinámica (usa las variables calculadas arriba)
text(
  x   = 0.5, 
  y   = 0.40, 
  labels = paste0(
    "Respuesta: ", datum_mayor, "\n", 
    "Probabilidad estimada = ", sprintf("%.2f", prob_mayor), " %"
  ), 
  cex = 1.8, 
  col = "darkblue", 
  font = 2, 
  adj = 0.5
)

# 4. LÍNEA DECORATIVA SUTIL
abline(h = 0.75, col = "gray70", lty = 2, lwd = 1)

CONCLUSIÓN

Los resultados muestran que el WGS84 es el sistema de referencia (Datum) predominante en la georreferenciación de las muestras, con una probabilidad estimada del 92,46%.