CARGA DE DATOS
knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE,
fig.align = "center"
)
# Carga de datos limpia para evitar errores de sintaxis
datos <- read.csv("C:/Users/Martin/Desktop/Estadistica/CMDB_Data.csv", header = TRUE, sep = ";", dec = ".", fileEncoding = "latin1")
# Limpieza básica para evitar valores en blanco o nulos en el nombre del distrito
datos$DISTRICT_NAME[datos$DISTRICT_NAME == ""] <- "Desconocido"
datos$DISTRICT_NAME[is.na(datos$DISTRICT_NAME)] <- "Desconocido"
datos$DISTRICT_NAME[tolower(datos$DISTRICT_NAME) == "unknown"] <- "Desconocido"
# 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_SUBMITTE : 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" "Desconocido" ...
## $ 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" "0m" "" "" ...
## $ 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]
Se cargaron correctamente los datos para el análisis de la variable
VARIABLE SELECCIONADA: DISTRICT_NAME
# Seleccionar la variable que será analizada
variable_seleccionada <- datos$DISTRICT_NAME
nombre_variable <- "DISTRICT_NAME"
cat("Variable seleccionada:", nombre_variable, "\n")
## Variable seleccionada: DISTRICT_NAME
cat("Categorías con mayor frecuencia:\n")
## Categorías con mayor frecuencia:
print(head(sort(table(variable_seleccionada), decreasing = TRUE), 10))
## variable_seleccionada
## Desconocido Yerington Warren Bingham Butte
## 79 56 43 41 37
## Cripple Creek Pima Gold Hill Kiruna Pioneer
## 34 34 26 24 20
DISTRIBUCIÓN DE FRECUENCIAS POR DISTRITO (TOP 15)
# Cargar las librerías necesarias
library(dplyr)
library(gt)
# 1. CONTAR LAS MUESTRAS POR DISTRITO Y ELIMINAR DESCONOCIDOS
TDFDIST <- table(datos$DISTRICT_NAME)
TDFDIST <- TDFDIST[names(TDFDIST) != "Desconocido"]
# 2. ORDENAR DE MAYOR A MENOR Y TOMAR EL TOP 15 PARA LA TABLA GENERAL
TDFDIST_ORD <- sort(TDFDIST, decreasing = TRUE)
tabla_agrupada <- as.data.frame(head(TDFDIST_ORD, 15))
colnames(tabla_agrupada) <- c("Distrito", "ni")
# 3. CALCULAR PROPORCIONES Y PORCENTAJES (Sobre el total general válido)
total_muestras <- sum(TDFDIST_ORD)
tabla_agrupada$hi <- tabla_agrupada$ni / total_muestras
tabla_agrupada$hi_porc <- round(tabla_agrupada$hi * 100, 2)
# 4. CREAR LA FILA DE TOTALES DEL TOP 15
Total <- data.frame(Distrito = "TOTAL (TOP 15)",
ni = sum(tabla_agrupada$ni),
hi = sum(tabla_agrupada$hi),
hi_porc = sum(tabla_agrupada$hi_porc))
# 5. UNIR TODO EN UNA SOLA TABLA FINAL
tabla_final <- rbind(tabla_agrupada, Total)
# 6. MOSTRAR LA TABLA CON LA ESTÉTICA 'gt'
tabla_dist_gt <- tabla_final %>%
gt() %>%
tab_header(
title = md("**Tabla N° 1**"),
subtitle = md("Distribución de muestras de minerales críticos (Top 15 Distritos)")
) %>%
tab_source_note(
source_note = md("Autores: Grupo 1 <br> Semestre 2026 - 2026")
) %>%
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_dist_gt
| Tabla N° 1 | |||
| Distribución de muestras de minerales críticos (Top 15 Distritos) | |||
| Distrito | ni | hi | hi_porc |
|---|---|---|---|
| Yerington | 56 | 0.04351204 | 4.35 |
| Warren | 43 | 0.03341103 | 3.34 |
| Bingham | 41 | 0.03185703 | 3.19 |
| Butte | 37 | 0.02874903 | 2.87 |
| Cripple Creek | 34 | 0.02641803 | 2.64 |
| Pima | 34 | 0.02641803 | 2.64 |
| Gold Hill | 26 | 0.02020202 | 2.02 |
| Kiruna | 24 | 0.01864802 | 1.86 |
| Pioneer | 20 | 0.01554002 | 1.55 |
| Eureka | 18 | 0.01398601 | 1.40 |
| Miami-Inspiration | 18 | 0.01398601 | 1.40 |
| Terraville-Homestake | 18 | 0.01398601 | 1.40 |
| Carajas | 16 | 0.01243201 | 1.24 |
| Bunker Hill | 14 | 0.01087801 | 1.09 |
| Cochise | 14 | 0.01087801 | 1.09 |
| TOTAL (TOP 15) | 413 | 0.32090132 | 32.08 |
| Autores: Grupo 1 Semestre 2026 - 2026 |
|||
TOP 5 VS OTROS DISTRITOS
# 1. SEPARAR EL TOP 5 DE LOS DEMÁS DISTRITOS
Top5_Dist <- head(TDFDIST_ORD, 5)
Otros_Dist <- sum(TDFDIST_ORD) - sum(Top5_Dist)
# 2. CREAR UN NUEVO CONJUNTO AGRUPADO
Datos_Agrupados <- c(Top5_Dist, "Otros Distritos" = Otros_Dist)
# 3. ESTRUCTURAR LA NUEVA TABLA
tabla_top5 <- as.data.frame(Datos_Agrupados)
colnames(tabla_top5) <- c("ni")
tabla_top5$Distrito <- rownames(tabla_top5)
tabla_top5 <- tabla_top5[, c("Distrito", "ni")] # Reordenar columnas
# 4. CALCULAR PROPORCIONES
tabla_top5$hi <- tabla_top5$ni / sum(tabla_top5$ni)
tabla_top5$hi_porc <- round(tabla_top5$hi * 100, 2)
# 5. FILA DE TOTALES GENERALES
Total_Clasif <- data.frame(Distrito = "TOTAL GENERAL",
ni = sum(tabla_top5$ni),
hi = sum(tabla_top5$hi),
hi_porc = sum(tabla_top5$hi_porc))
tabla_final_clasif <- rbind(tabla_top5, Total_Clasif)
# 6. ACOPLAR Y MOSTRAR LA TABLA CON LA ESTÉTICA 'gt'
tabla_clasif_gt <- tabla_final_clasif %>%
gt() %>%
tab_header(
title = md("**Tabla N° 2**"),
subtitle = md("Comparativa de los 5 distritos principales vs el resto")
) %>%
tab_source_note(
source_note = md("Autores: Grupo 1 <br> Semestre 2026 - 2026")
) %>%
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_clasif_gt
| Tabla N° 2 | |||
| Comparativa de los 5 distritos principales vs el resto | |||
| Distrito | ni | hi | hi_porc |
|---|---|---|---|
| Yerington | 56 | 0.04351204 | 4.35 |
| Warren | 43 | 0.03341103 | 3.34 |
| Bingham | 41 | 0.03185703 | 3.19 |
| Butte | 37 | 0.02874903 | 2.87 |
| Cripple Creek | 34 | 0.02641803 | 2.64 |
| Otros Distritos | 1076 | 0.83605284 | 83.61 |
| TOTAL GENERAL | 1287 | 1.00000000 | 100.00 |
| Autores: Grupo 1 Semestre 2026 - 2026 |
|||
GRÁFICA DE BARRAS LOCAL Y GLOBAL (TOP 10)
# Ajustar margen inferior por si los nombres de los distritos son largos
par(mar = c(12, 4, 4, 2) + 0.1)
# GARANTIZAR UN MÁXIMO DE 10 BARRAS
num_barras <- min(length(TDFDIST_ORD), 10)
Top_Graficas <- head(TDFDIST_ORD, num_barras)
limite_y_local <- max(Top_Graficas) * 1.2
# 1. PRIMERA GRÁFICA (LOCAL)
barplot(Top_Graficas,
main = "Gráfica 1: Top 10 Distritos (LOCAL)",
ylab = "Cantidad de muestras",
col = "pink",
las = 2, # Nombres en vertical
cex.names = 0.7,
ylim = c(0, limite_y_local))
# 2. SEGUNDA GRÁFICA (GLOBAL - EJE Y AL TOTAL DE DATOS)
# 'total_muestras' representa el 100% de los datos válidos analizados
barplot(Top_Graficas,
main = "Gráfica 2: Top 10 Distritos (GLOBAL)",
ylab = "Cantidad de muestras totales",
col = "skyblue",
las = 2,
cex.names = 0.7,
ylim = c(0, total_muestras), # El techo es el total de datos
yaxt = "n")
# 3. Dibujar el eje Y personalizado
puntos_eje <- unique(round(c(seq(0, total_muestras, length.out = 5), total_muestras)))
axis(2, at = puntos_eje, las = 1)
ANÁLISIS DE FRECUENCIA ABSOLUTA (TOP 10)
par(mar = c(12, 4, 4, 2) + 0.1)
freq_abs <- Top_Graficas
# 2. DIBUJAR LA GRÁFICA Y GUARDAR SUS COORDENADAS
bar_centers <- barplot(freq_abs,
main = "Gráfica 3: Frecuencia Absoluta (Top 10 Distritos)",
ylab = "Cantidad",
col = "orange",
las = 2,
cex.names = 0.7,
ylim = c(0, max(freq_abs) * 1.2))
# 3. PONER LAS ETIQUETAS NUMÉRICAS ENCIMA DE LAS BARRAS
text(x = bar_centers,
y = freq_abs,
labels = freq_abs,
pos = 3,
cex = 0.8,
col = "black")
ANÁLISIS DE FRECUENCIA RELATIVA (PORCENTAJES)
par(mar = c(12, 4, 4, 2) + 0.1)
# 1. TRANSFORMAR LAS CANTIDADES EN PORCENTAJES SOBRE EL TOTAL GENERAL
freq_rel_porc <- round((Top_Graficas / total_muestras) * 100, 2)
# 2. DIBUJAR LAS BARRAS Y PERSONALIZAR EL LIENZO
bar_centers_rel <- barplot(freq_rel_porc,
main = "Gráfica 4: Distribución Porcentual (Top 10 Distritos)",
ylab = "Porcentaje del Total (%)",
col = "orchid",
las = 2,
cex.names = 0.7,
ylim = c(0, max(freq_rel_porc) * 1.3),
yaxt = "n",
yaxs = "i")
# 3. CONSTRUIR UN EJE Y PERSONALIZADO
axis(2, at = seq(0, max(freq_rel_porc) + 2, length.out = 5),
labels = paste0(round(seq(0, max(freq_rel_porc) + 2, length.out = 5), 1), "%"),
las = 1, cex.axis = 0.8)
# 4. COLOCAR LAS ETIQUETAS CON EL SÍMBOLO "%" EN LAS BARRAS
text(x = bar_centers_rel,
y = freq_rel_porc,
labels = paste0(freq_rel_porc, "%"),
pos = 3,
cex = 0.8,
col = "black")
GRÁFICA CIRCULAR
# 1. ALISTAR LOS DATOS (TOP 5 y el resto)
Datos_Pie <- c(Top5_Dist, "Otros Distritos" = Otros_Dist)
hi_pie_porc <- round(prop.table(Datos_Pie) * 100, 1)
colores <- c("#66C2A5", "#FC8D62", "#8DA0CB", "#E78AC3", "#A6D854", "#D3D3D3")
etiquetas_leyenda <- paste0(names(Datos_Pie), " (", hi_pie_porc, "%)")
# 2. AJUSTAR EL LIENZO DE TRABAJO
par(mar = c(2, 2, 3, 14), xpd = TRUE)
# 3. DIBUJAR LA GRÁFICA CIRCULAR
pie(hi_pie_porc,
labels = NA,
col = colores,
main = "Gráfica 5: Proporción de Distritos (Top 5 vs Otros)",
radius = 0.9)
# 4. MARCAR LAS COORDENADAS DEL CUADRO DE LEYENDA
x0 <- 1.1
x1 <- 2.8
y1 <- 0.9
y0 <- -0.5
# 5. DIBUJAR EL CUADRO BLANCO DE FONDO
rect(xleft = x0, ybottom = y0, xright = x1, ytop = y1, col = "white", border = "black")
# 6. PONER EL TÍTULO DENTRO DE LA TARJETA
text(x = (x0 + x1)/2, y = y1 - 0.15, labels = "Distritos Mineros", font = 2, cex = 0.9)
# 7. LLENAR LA TARJETA CON LOS COLORES Y PORCENTAJES
legend(x = (x0 + x1)/2,
y = y1 - 0.25,
legend = etiquetas_leyenda,
fill = colores,
cex = 0.7,
bty = "n",
xjust = 0.5,
y.intersp = 1.4)
CONCLUSIÓN DE LA VARIABLE DISTRICT_NAME
El análisis de la variable DISTRICT_NAME confirma que la mayoría de los registros se concentra en el distrito Yerington, que representa el 4.35% de las muestras con distrito identificado. Esta tendencia evidencia una mayor actividad de documentación geoquímica en dicha zona y muestra que las muestras no se distribuyen de manera uniforme entre los distritos.