1 CARGA DE DATOS Y LIBRERÍAS

library(readr)
library(dplyr)
library(gt)
library(magrittr)

Sedimentos_Marinos <- read.csv(
  "C:\\Users\\dougl\\Downloads\\Sedimentos_Marinos.csv",
  header = TRUE,
  sep = ";",
  dec = ".",
  stringsAsFactors = FALSE  # importante para evitar factores
)

1.1 Agrupacion de datos

Sedimentos_Marinos <- Sedimentos_Marinos %>%
  mutate(
    Clasificacion = case_when(
      .data$CLASSIFICATION == "BEDROCK" ~ "Bedrock",
      .data$CLASSIFICATION == "BOULDERS" ~ "Boulders",
      .data$CLASSIFICATION %in% c("CLAY", "CLAYEY SAND", "CLAYEY SILT") ~ "Clay",
      .data$CLASSIFICATION %in% c("MUD", "MUDDY SAND") ~ "Mud",
      .data$CLASSIFICATION %in% c("SILT", "SILTY CLAY", "SILTY SAND") ~ "Silt",
      .data$CLASSIFICATION %in% c("SAND", "SAND SILT CLAY", "SANDY SILT") ~ "Sand",
      .data$CLASSIFICATION %in% c("GRAVEL", "GRAVEL > 10%", "GRAVELLY SEDIMENT") ~ "Gravel",
      TRUE ~ NA_character_
    )
  )

1.2 Limpieza y orden de datos

Sedimentos_Marinos <- Sedimentos_Marinos %>%
  filter(!is.na(Clasificacion))

#Tamaño Muestral limpio
n <- nrow(Sedimentos_Marinos)
cat("Tamaño de la muestra limpia (n):", n)
## Tamaño de la muestra limpia (n): 7208
#Orden de datos granulometricos 
orden_granulometrico <- c(
  "Clay", "Mud", "Silt", "Sand", "Gravel", "Boulders", "Bedrock"
)
Sedimentos_Marinos$Clasificacion <- factor(
  Sedimentos_Marinos$Clasificacion,
  levels = orden_granulometrico,
  ordered = TRUE
)

is.ordered(Sedimentos_Marinos$Clasificacion)
## [1] TRUE

CARGA DE LIBRERÍAS

library(dplyr)
library(knitr)
library(e1071)
library(moments)
## 
## Adjuntando el paquete: 'moments'
## The following objects are masked from 'package:e1071':
## 
##     kurtosis, moment, skewness
library(kableExtra)
## 
## Adjuntando el paquete: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(gt)
library(magrittr)

2 TABLA DE DISTRIBUCIÓN DE FRECUENCIA

TABLA DE DISTRIBUCIÓN DE FRECUENCIA

TDFClasificacion <- table(Sedimentos_Marinos$Clasificacion)
TDFClasificacion <- as.data.frame(TDFClasificacion)
colnames(TDFClasificacion) <- c("Grupo", "Freq")

TDFClasificacionFinal <- TDFClasificacion %>%
  mutate(
    ni = Freq,
    hi = round((Freq / sum(Freq)) * 100, 2)
  )

diferencia <- 100 - sum(TDFClasificacionFinal$hi)
TDFClasificacionFinal$hi[nrow(TDFClasificacionFinal)] <- 
  TDFClasificacionFinal$hi[nrow(TDFClasificacionFinal)] + diferencia
TDFClasificacionFinal <- TDFClasificacionFinal %>%
  select(Grupo, ni, hi)

TDFClasificacionFinal
##      Grupo   ni    hi
## 1     Clay  969 13.44
## 2      Mud    5  0.07
## 3     Silt  855 11.86
## 4     Sand 3054 42.37
## 5   Gravel 2161 29.98
## 6 Boulders  143  1.98
## 7  Bedrock   21  0.30

TABLA FINAL CON ESTILO

# Crear fila total
total <- TDFClasificacionFinal %>%
  summarise(across(where(is.numeric), sum, na.rm = TRUE)) %>%
  mutate(Grupo = "Total")  
## Warning: There was 1 warning in `summarise()`.
## ℹ In argument: `across(where(is.numeric), sum, na.rm = TRUE)`.
## Caused by warning:
## ! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
## Supply arguments directly to `.fns` through an anonymous function instead.
## 
##   # Previously
##   across(a:b, mean, na.rm = TRUE)
## 
##   # Now
##   across(a:b, \(x) mean(x, na.rm = TRUE))
# Unir con el dataframe original
TDFClasificacionFinal_total <- bind_rows(TDFClasificacionFinal, total)

# Crear tabla gt
tabla_clasificacion <- TDFClasificacionFinal_total %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1**"),
    subtitle = md("Frecuencias Absolutas y Relativas de la Clasificación Granulométrica de Sedimentos Marinos (1995–2024)")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo Geo-Minas")
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = Grupo == "Total")
  )

tabla_clasificacion
Tabla N°1
Frecuencias Absolutas y Relativas de la Clasificación Granulométrica de Sedimentos Marinos (1995–2024)
Grupo ni hi
Clay 969 13.44
Mud 5 0.07
Silt 855 11.86
Sand 3054 42.37
Gravel 2161 29.98
Boulders 143 1.98
Bedrock 21 0.30
Total 7208 100.00
Autor: Grupo Geo-Minas

Los datos fueron agrupados debido a la gran cantidad de los mismos.

3 GRÁFICAS DE DISTRIBUCIÓN DE FRECUENCIA

# Excluir fila Total
TDFClasificacionPlot <- TDFClasificacionFinal[
  TDFClasificacionFinal$Grupo != "Total", ]

3.1 Diagrama de barras Local (ni)

barplot(
  TDFClasificacionPlot$ni,
  main = "Diagrama Nº1: Frecuencia Local (ni) de la Clasificación",
  xlab = "Clasificación Granulométrica",
  ylab = "Cantidad",
  col = "cyan",
  names.arg = TDFClasificacionPlot$Grupo,
  las = 2,
  cex.names = 0.7
)

3.2 Diagrama de barras Global (ni)

barplot(
  TDFClasificacionPlot$ni,
  main = "Gráfica Nº2: Frecuencia Global (ni) de la Clasificación Granulométrica",
  xlab = "Clasificación Granulométrica",
  ylab = "Cantidad",
  col = "cyan",
  names.arg = TDFClasificacionPlot$Grupo,
  las = 2,
  ylim = c(0, sum(TDFClasificacionPlot$ni))
)

3.3 Diagrama de barras Local (hi)

barplot(
  TDFClasificacionPlot$hi,
  main = "Gráfica Nº3: Frecuencia Relativa Local (hi)",
  xlab = "Clasificación Granulométrica",
  ylab = "Porcentaje (%)",
  col = "blue",
  names.arg = TDFClasificacionPlot$Grupo,
  las = 2,
  cex.names = 0.7
)

3.4 Diagrama de barras Global (hi)

barplot(
  TDFClasificacionPlot$hi,
  main = "Gráfica Nº4: Frecuencia Relativa Global (hi)",
  xlab = "Clasificación Granulométrica",
  ylab = "Porcentaje (%)",
  col = "blue",
  names.arg = TDFClasificacionPlot$Grupo,
  las = 2,
  ylim = c(0, 100)
)

3.5 Diagrama Circular hi %

# Excluir fila Total
TDFPie <- TDFClasificacionFinal[
  TDFClasificacionFinal$Grupo != "Total", ]

# Paleta de colores pastel (sedimentos marinos)
colores_sedimentos <- c(
  "Clay"     = "#D8CFE2",  # arcilla clara
  "Mud"      = "#CFC9B2",  # lodo beige
  "Silt"     = "#E6D8AD",  # limo amarillo suave
  "Sand"     = "#F3E5AB",  # arena
  "Gravel"   = "#D2B48C",  # grava café claro
  "Boulders" = "#C4B7A6",  # roca clara
  "Bedrock"  = "#B0A18E"   # roca base clara
)

# Asegurar correspondencia color–categoría
colores_pie <- colores_sedimentos[TDFPie$Grupo]

# Etiquetas internas (porcentaje)
etiquetas <- paste0(round(TDFPie$hi, 0.4), "%")

# Gráfico circular
pie(
  TDFPie$hi,
  labels = etiquetas,
  col = colores_pie,
  main = "Gráfica Nº5: Distribución Granulométrica de Sedimentos Marinos (%)",
  radius = 1
)
legend(
  "bottomright",
  legend = TDFPie$Grupo,
  fill = colores_pie,
  title = "Clasificación",
  cex = 0.6,
  bty = "n"
)

4 INDICADORES ESTADISTICOS

4.1 Tamaño muestral

n <- length(Sedimentos_Marinos$Clasificacion)

n
## [1] 7208

4.2 Moda

tabla_freq <- table(Sedimentos_Marinos$Clasificacion)
moda_clasificacion <- names(tabla_freq)[which.max(tabla_freq)]

moda_clasificacion
## [1] "Sand"

4.3 Tabla de indicadores estadisticos

tabla_indicadores <- data.frame(
  Indicador = c("Tamaño muestral (n)", "Moda"),
  Resultado = c(
    n,
    as.character(moda_clasificacion)
  )
)

tabla_indicadores_gt <- tabla_indicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°2**"),
    subtitle = md("Indicadores Estadísticos de la Clasificación Granulométrica")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo Geo-Minas")
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = Indicador == "Moda")
  )

tabla_indicadores_gt
Tabla N°2
Indicadores Estadísticos de la Clasificación Granulométrica
Indicador Resultado
Tamaño muestral (n) 7208
Moda Sand
Autor: Grupo Geo-Minas

Al ser el tamaño muestral un valor par no se puede determinar con exactitud la mediana.

5 CONCLUSIÓN

La variable Clasificación Granulométrica presenta registros que fluctúan entre Clay (arcilla) y Bedrock (roca madre), y sus valores se encuentran predominantemente en torno a la categoría de Sand (arena), la cual representa la mayoria de la muestra total. Esta relación es fundamental para el análisis minero y geotécnico, ya que la variación de la textura con la profundidad condiciona la resistencia del macizo y la estabilidad de las excavaciones lo que nos permite anticipar cambios en la presión de poros y la permeabilidad a medida que aumenta la profundidad operativa.