CARGA DE DATOS

CARGA DE DATOS

# Configuración general de los bloques de código
knitr::opts_chunk$set(
  echo = TRUE,
  message = FALSE,
  warning = FALSE,
  fig.align = "center"
)

# Carga del archivo de datos
datos <- read.csv(
  "C:/Users/Martin/Desktop/Estadistica/CMDB_Data.csv",
  header = TRUE,
  sep = ";",
  dec = ".",
  fileEncoding = "latin1"
)

# Convertir la variable CONTINENT a texto para facilitar su limpieza
datos$CONTINENT <- as.character(datos$CONTINENT)

# Reemplazar valores vacíos o nulos por "Desconocido"
datos$CONTINENT[datos$CONTINENT == ""] <- "Desconocido"
datos$CONTINENT[is.na(datos$CONTINENT)] <- "Desconocido"

# Reemplazar diferentes formas de escribir "unknown"
datos$CONTINENT[
  tolower(trimws(datos$CONTINENT)) %in% c("unknown", "desconocido")
] <- "Desconocido"

# Unificar América del Norte y América del Sur en una sola categoría
datos$CONTINENT[
  datos$CONTINENT %in% c("North America", "South America")
] <- "America"

# Convertir nuevamente la variable en factor
datos$CONTINENT <- as.factor(datos$CONTINENT)

# Verificación inicial del conjunto 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" ...
##  $ X0                   : 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            : Factor w/ 6 levels "Africa","America",..: 2 2 2 1 5 2 2 2 2 2 ...
##  $ 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" "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 distribución geográfica de las muestras de elementos críticos por continente.

ANÁLISIS UNIVARIADO

DISTRIBUCIÓN GENERAL DE FRECUENCIAS POR CONTINENTE

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

# 1. CREAR LA TABLA DE FRECUENCIAS DE LA VARIABLE CONTINENT
TDFCONTINENT <- table(datos$CONTINENT)

# 2. ELIMINAR LA CATEGORÍA "DESCONOCIDO" DEL ANÁLISIS
TDFCONTINENT <- TDFCONTINENT[
  names(TDFCONTINENT) != "Desconocido"
]

# 3. ORDENAR LOS CONTINENTES DE MAYOR A MENOR FRECUENCIA
TDFCONTINENT_ORD <- sort(
  TDFCONTINENT,
  decreasing = TRUE
)

# 4. CONVERTIR LA TABLA DE FRECUENCIAS EN DATA FRAME
tabla_agrupada <- as.data.frame(TDFCONTINENT_ORD)

# Cambiar los nombres de las columnas
colnames(tabla_agrupada) <- c("Continente", "ni")

# 5. CALCULAR EL TOTAL DE MUESTRAS VÁLIDAS
total_muestras <- sum(tabla_agrupada$ni)

# 6. CALCULAR FRECUENCIA RELATIVA Y PORCENTUAL
tabla_agrupada$hi <- tabla_agrupada$ni / total_muestras

tabla_agrupada$hi_porc <- round(
  tabla_agrupada$hi * 100,
  2
)

# 7. CREAR LA FILA DE TOTALES
Total <- data.frame(
  Continente = "TOTAL",
  ni = sum(tabla_agrupada$ni),
  hi = sum(tabla_agrupada$hi),
  hi_porc = round(sum(tabla_agrupada$hi_porc), 2)
)

# 8. UNIR LA TABLA DE FRECUENCIAS CON LA FILA DE TOTALES
tabla_final <- rbind(
  tabla_agrupada,
  Total
)

# 9. MOSTRAR LA TABLA CON LA LIBRERÍA gt
tabla_continent_gt <- tabla_final %>%
  gt() %>%
  fmt_number(
    columns = hi,
    decimals = 4
  ) %>%
  fmt_number(
    columns = hi_porc,
    decimals = 2
  ) %>%
  cols_label(
    Continente = "Continente",
    ni = "Frecuencia absoluta (ni)",
    hi = "Frecuencia relativa (hi)",
    hi_porc = "Porcentaje (%)"
  ) %>%
  tab_header(
    title = md("**Tabla N.° 1**"),
    subtitle = md(
      "Distribución de muestras de elementos críticos por continente"
    )
  ) %>%
  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
tabla_continent_gt
Tabla N.° 1
Distribución de muestras de elementos críticos por continente
Continente Frecuencia absoluta (ni) Frecuencia relativa (hi) Porcentaje (%)
America 1206 0.8835 88.35
Europe 54 0.0396 3.96
Oceania 40 0.0293 2.93
Asia 37 0.0271 2.71
Africa 28 0.0205 2.05
TOTAL 1365 1.0000 100.00
Autores: Grupo 1
Semestre 2026 - 2026

TABLA DE DISTRIBUCIÓN DE FRECUENCIAS

FRECUENCIAS ABSOLUTAS, RELATIVAS Y ACUMULADAS

# 1. CREAR UNA COPIA DE LA TABLA DE FRECUENCIAS VÁLIDAS
TDF_limpia <- TDFCONTINENT_ORD

# 2. CONVERTIR LA TABLA EN DATA FRAME
tabla_frecuencias <- as.data.frame(TDF_limpia)

# Cambiar los nombres de las columnas
colnames(tabla_frecuencias) <- c("Continente", "ni")

# 3. CALCULAR LA FRECUENCIA RELATIVA
tabla_frecuencias$hi <- round(
  tabla_frecuencias$ni / sum(tabla_frecuencias$ni),
  4
)

# 4. CALCULAR EL PORCENTAJE
tabla_frecuencias$hi_porc <- round(
  tabla_frecuencias$hi * 100,
  2
)

# 5. CALCULAR LAS FRECUENCIAS ACUMULADAS ASCENDENTES
tabla_frecuencias$Niasc <- cumsum(
  tabla_frecuencias$ni
)

tabla_frecuencias$Hiasc <- round(
  cumsum(tabla_frecuencias$hi_porc),
  2
)

# 6. CALCULAR LAS FRECUENCIAS ACUMULADAS DESCENDENTES
tabla_frecuencias$Nidsc <- rev(
  cumsum(rev(tabla_frecuencias$ni))
)

tabla_frecuencias$Hidsc <- round(
  rev(cumsum(rev(tabla_frecuencias$hi_porc))),
  2
)

# 7. CREAR LA FILA DE TOTALES
Total_Frecuencias <- data.frame(
  Continente = "TOTAL",
  ni = sum(tabla_frecuencias$ni),
  hi = round(sum(tabla_frecuencias$hi), 4),
  hi_porc = round(sum(tabla_frecuencias$hi_porc), 2),
  Niasc = NA,
  Hiasc = NA,
  Nidsc = NA,
  Hidsc = NA
)

# 8. UNIR LA TABLA CON LA FILA DE TOTALES
tabla_con_total <- rbind(
  tabla_frecuencias,
  Total_Frecuencias
)

# 9. CREAR LA TABLA VISUAL
tabla_frecuencias_gt <- tabla_con_total %>%
  gt() %>%
  fmt_number(
    columns = hi,
    decimals = 4
  ) %>%
  fmt_number(
    columns = c(hi_porc, Hiasc, Hidsc),
    decimals = 2
  ) %>%
  cols_label(
    Continente = "Continente",
    ni = "ni",
    hi = "hi",
    hi_porc = "hi (%)",
    Niasc = "Ni ascendente",
    Hiasc = "Hi ascendente (%)",
    Nidsc = "Ni descendente",
    Hidsc = "Hi descendente (%)"
  ) %>%
  tab_header(
    title = md("**Tabla N.° 2**"),
    subtitle = md(
      "Tabla de distribución de frecuencias por continente"
    )
  ) %>%
  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
tabla_frecuencias_gt
Tabla N.° 2
Tabla de distribución de frecuencias por continente
Continente ni hi hi (%) Ni ascendente Hi ascendente (%) Ni descendente Hi descendente (%)
America 1206 0.8835 88.35 1206 88.35 1365 100.00
Europe 54 0.0396 3.96 1260 92.31 159 11.65
Oceania 40 0.0293 2.93 1300 95.24 105 7.69
Asia 37 0.0271 2.71 1337 97.95 65 4.76
Africa 28 0.0205 2.05 1365 100.00 28 2.05
TOTAL 1365 1.0000 100.00 NA NA NA NA
Autores: Grupo 1
Semestre 2026 - 2026

VISUALIZACIÓN DE COMPARATIVAS BÁSICAS

GRÁFICA DE BARRAS LOCAL Y GLOBAL

# Guardar las frecuencias absolutas de todos los continentes
freq_abs <- TDFCONTINENT_ORD

# Ajustar los márgenes del área gráfica
par(mar = c(7, 5, 4, 2) + 0.1)

# Calcular el límite superior para la gráfica local
limite_y_local <- max(freq_abs) * 1.20

# 1. GRÁFICA LOCAL
# El eje vertical se ajusta al continente con mayor frecuencia
bar_centers_local <- barplot(
  freq_abs,
  main = "Gráfica 1: Distribución de muestras por continente (LOCAL)",
  xlab = "Continente",
  ylab = "Cantidad de muestras",
  col = "pink",
  las = 2,
  cex.names = 0.8,
  ylim = c(0, limite_y_local)
)

# Agregar los valores encima de cada barra
text(
  x = bar_centers_local,
  y = freq_abs,
  labels = freq_abs,
  pos = 3,
  cex = 0.8,
  col = "black"
)

# 2. GRÁFICA GLOBAL
# El eje vertical representa el total de muestras válidas
bar_centers_global <- barplot(
  freq_abs,
  main = "Gráfica 2: Distribución de muestras por continente (GLOBAL)",
  xlab = "Continente",
  ylab = "Cantidad de muestras",
  col = "skyblue",
  las = 2,
  cex.names = 0.8,
  ylim = c(0, total_muestras),
  yaxt = "n"
)

# Construir un eje vertical personalizado
puntos_eje <- unique(
  round(
    c(
      seq(0, total_muestras, length.out = 5),
      total_muestras
    )
  )
)

axis(
  side = 2,
  at = puntos_eje,
  las = 1
)

# Agregar los valores encima de las barras
text(
  x = bar_centers_global,
  y = freq_abs,
  labels = freq_abs,
  pos = 3,
  cex = 0.8,
  col = "black"
)

ANÁLISIS DE FRECUENCIA ABSOLUTA

ANÁLISIS DE FRECUENCIA ABSOLUTA POR CONTINENTE

# Ajustar los márgenes de la gráfica
par(mar = c(7, 5, 4, 2) + 0.1)

# Dibujar la gráfica y guardar las coordenadas de las barras
bar_centers <- barplot(
  freq_abs,
  main = "Gráfica 3: Frecuencia absoluta por continente",
  xlab = "Continente",
  ylab = "Cantidad de muestras",
  col = "orange",
  las = 2,
  cex.names = 0.8,
  ylim = c(0, max(freq_abs) * 1.20)
)

# Colocar las frecuencias absolutas 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

ANÁLISIS DE FRECUENCIA RELATIVA EN PORCENTAJES

# Ajustar los márgenes de la gráfica
par(mar = c(7, 5, 4, 2) + 0.1)

# Calcular los porcentajes de cada continente
freq_rel_porc <- round(
  (freq_abs / total_muestras) * 100,
  2
)

# Establecer un límite superior adecuado
limite_porcentual <- max(freq_rel_porc) * 1.20

# Dibujar la gráfica de porcentajes
bar_centers_rel <- barplot(
  freq_rel_porc,
  main = "Gráfica 4: Distribución porcentual por continente",
  xlab = "Continente",
  ylab = "Porcentaje (%)",
  col = "orchid",
  las = 2,
  cex.names = 0.8,
  ylim = c(0, limite_porcentual),
  yaxt = "n",
  yaxs = "i"
)

# Crear los puntos del eje vertical
puntos_porcentaje <- pretty(
  c(0, limite_porcentual),
  n = 5
)

# Dibujar el eje con el símbolo de porcentaje
axis(
  side = 2,
  at = puntos_porcentaje,
  labels = paste0(puntos_porcentaje, "%"),
  las = 1,
  cex.axis = 0.8
)

# Colocar los porcentajes encima de las barras
text(
  x = bar_centers_rel,
  y = freq_rel_porc,
  labels = paste0(freq_rel_porc, "%"),
  pos = 3,
  cex = 0.8,
  col = "black"
)

COMPOSICIÓN GLOBAL

GRÁFICA CIRCULAR DE LA DISTRIBUCIÓN POR CONTINENTE

# Calcular el porcentaje correspondiente a cada continente
hi_cont_porc <- round(
  prop.table(freq_abs) * 100,
  1
)

# Crear una paleta de colores automática
colores <- rainbow(
  length(freq_abs),
  s = 0.55,
  v = 0.90
)

# Crear las etiquetas para la leyenda
etiquetas_leyenda <- paste0(
  names(freq_abs),
  " (",
  hi_cont_porc,
  "%)"
)

# Ajustar el lienzo para dejar espacio a la leyenda
par(
  mar = c(2, 2, 4, 13),
  xpd = TRUE
)

# Dibujar la gráfica circular
pie(
  freq_abs,
  labels = paste0(hi_cont_porc, "%"),
  col = colores,
  main = "Gráfica 5: Distribución de muestras por continente",
  radius = 0.90,
  cex = 0.9
)

# Agregar la leyenda a la derecha
legend(
  x = 1.15,
  y = 1,
  legend = etiquetas_leyenda,
  fill = colores,
  title = "Continentes",
  cex = 0.8,
  bty = "o",
  y.intersp = 1.3
)

CONCLUSIÓN

CONCLUSIÓN DE LA VARIABLE CONTINENT

Dominio de América: La inmensa mayoría de las muestras provienen de América, concentrando el 88.4% del total. En resumen, la distribución de la variable continente está fuertemente sesgada hacia América.