CARGA DE DATOS
# Ruta completa al archivo
datos <- read.csv("C:/Users/Grace/Downloads/Sedimentos Marinos (1).csv",
header = TRUE,
sep = ";",
dec = ".",
stringsAsFactors = FALSE)
Librerias
**CARGA DE LIBRERÍAS**
library(gt)
library(dplyr)
library(knitr)
**TABLA DE DISTRIBUCIÓN DE FRECUENCIA**
# Extraer variable original
litologia_original <- datos$LITHOLOGY
# Reclasificación:
litologia_reclas <- case_when(
is.na(litologia_original) | litologia_original == "" | litologia_original == " " | litologia_original == "-"
~ "Sin registro",
grepl("gravel", tolower(litologia_original), fixed = TRUE) ~ "Gravel",
grepl("mud", tolower(litologia_original), fixed = TRUE) ~ "Mud",
grepl("sand", tolower(litologia_original), fixed = TRUE) ~ "Sand",
grepl("nodule", tolower(litologia_original), fixed = TRUE) ~ "Nodules",
grepl("brick", tolower(litologia_original), fixed = TRUE) ~ "Bricks",
TRUE ~ "Sin registro" # Cualquier otro valor va aquí
)
# Fijamos el orden deseado
nivel_deseado <- c("Sin registro", "Gravel", "Mud", "Sand", "Nodules", "Bricks")
# Tabla de frecuencias con orden
ni <- table(factor(litologia_reclas, levels = nivel_deseado))
# Frecuencia relativa %
hi <- round(prop.table(ni) * 100, 2)
# Crear tabla base
tabla_finallitologia <- data.frame(
Litologia = names(ni),
ni = as.numeric(ni),
hi = as.numeric(hi)
)
# Fila total
fila_total <- data.frame(
Litologia = "TOTAL",
ni = sum(tabla_finallitologia$ni),
hi = sum(tabla_finallitologia$hi)
)
# Unir tabla
tabla_finallitologia <- rbind(tabla_finallitologia, fila_total)
# Mostrar tabla simple
tabla_finallitologia
## Litologia ni hi
## 1 Sin registro 14158 99.67
## 2 Gravel 27 0.19
## 3 Mud 7 0.05
## 4 Sand 10 0.07
## 5 Nodules 3 0.02
## 6 Bricks 0 0.00
## 7 TOTAL 14205 100.00
**TABLA DE DISTRIBUCIÓN FINAL**
tabla_litologia_gt <- tabla_finallitologia %>%
gt() %>%
tab_header(
title = md("**Tabla N° 1**"),
subtitle = md("Distribución de cantidad por LITHOLOGY ")
) %>%
tab_source_note(source_note = md("Autor: Grupo 3")) %>%
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 = Litologia == "TOTAL")
)
tabla_litologia_gt
| Tabla N° 1 | ||
| Distribución de cantidad por LITHOLOGY | ||
| Litologia | ni | hi |
|---|---|---|
| Sin registro | 14158 | 99.67 |
| Gravel | 27 | 0.19 |
| Mud | 7 | 0.05 |
| Sand | 10 | 0.07 |
| Nodules | 3 | 0.02 |
| Bricks | 0 | 0.00 |
| TOTAL | 14205 | 100.00 |
| Autor: Grupo 3 | ||
Colores
**Colores de las barras**
colores <- gray.colors(length(ni), start = 0.3, end = 0.9)
**Diagrama de cantidad Local**
barplot(tabla_finallitologia$ni[1:(nrow(tabla_finallitologia)-1)],
main = "Gráfica Nº1: Distribución de cantidad por LITHOLOGY",
cex.main = 0.7,
col = "gray",
xlab = "Litología",
ylab = "Cantidad (ni)",
names.arg = tabla_finallitologia$Litologia[1:(nrow(tabla_finallitologia)-1)],
las = 2)
**Diagrama de cantidad global**
barplot(
tabla_finallitologia$ni[1:(nrow(tabla_finallitologia)-1)],
main = "Gráfica Nº2: Distribución de cantidad por LITHOLOGY",
cex.main = 0.7,
xlab = "Litología",
ylab = "Cantidad (ni)",
col = "gray",
names.arg = tabla_finallitologia$Litologia[1:(nrow(tabla_finallitologia)-1)],
ylim = c(0, max(tabla_finallitologia$ni) * 1.1),
las = 2
)
**Diagrama de cantidad en porcentaje**
hi_local <- as.numeric(tabla_finallitologia$hi[1:(nrow(tabla_finallitologia)-1)])
barplot(
hi_local,
main = "Gráfica Nº3: Distribución en porcentaje por LITHOLOGY",
cex.main = 0.7,
xlab = "Litología",
ylab = "Porcentaje (%)",
col = "gray",
names.arg = tabla_finallitologia$Litologia[1:(nrow(tabla_finallitologia)-1)],
cex.names = 1,
ylim = c(0, 50),
las = 2
)
**Diagrama de cantidad en porcentaje global**
hi_global <- as.numeric(tabla_finallitologia$hi[1:(nrow(tabla_finallitologia)-1)])
barplot(
hi_global,
main = "Gráfica Nº4: Distribución en porcentaje por LITHOLOGY",
cex.main = 0.7,
xlab = "Litología",
ylab = "Porcentaje (%)",
col = "blue",
names.arg = tabla_finallitologia$Litologia[1:(nrow(tabla_finallitologia)-1)],
cex.names = 1,
ylim = c(0, 100),
las = 2
)
**DIAGRAMA DE CIRCULAR**
hi_litologia <- as.numeric(tabla_finallitologia$hi[1:(nrow(tabla_finallitologia)-1)])
litologia_cats <- tabla_finallitologia$Litologia[1:(nrow(tabla_finallitologia)-1)]
Colores <- colorRampPalette(c("lightskyblue", "darkblue"))(length(hi_litologia))
etiquetas <- paste0(hi_litologia, "%")
par(mfrow = c(1,2))
par(mar = c(2,2,4,2))
pie(
hi_litologia,
radius = 0.7,
col = Colores,
labels = etiquetas,
main = "Gráfica Nº5: Distribución en porcentaje por LITHOLOGY",
cex.main = 0.9
)
plot.new()
legend(
"center",
title = "Litología",
legend = litologia_cats,
fill = Colores,
cex = 0.7,
bg = "white",
box.lwd = 0.7
)
**Indicadores Estadísticos**
# Usamos la misma reclasificación que en la tabla/gráficas
litologia_reclas <- case_when(
is.na(datos$LITHOLOGY) | datos$LITHOLOGY == "" | datos$LITHOLOGY == " " | datos$LITHOLOGY == "-"
~ "Sin registro",
grepl("gravel", tolower(datos$LITHOLOGY), fixed = TRUE) ~ "Gravel",
grepl("mud", tolower(datos$LITHOLOGY), fixed = TRUE) ~ "Mud",
grepl("sand", tolower(datos$LITHOLOGY), fixed = TRUE) ~ "Sand",
grepl("nodule", tolower(datos$LITHOLOGY), fixed = TRUE) ~ "Nodules",
grepl("brick", tolower(datos$LITHOLOGY), fixed = TRUE) ~ "Bricks",
TRUE ~ "Sin registro"
)
# Tabla de frecuencias
tabla_frecuencia_litologia <- table(litologia_reclas)
# Calcular la moda
moda_litologia <- names(tabla_frecuencia_litologia)[which.max(tabla_frecuencia_litologia)]
# Tabla de indicadores
TablaIndicadores <- data.frame(
Variable = "Litología (agrupada)",
Moda = moda_litologia
)
# Tabla simple con kable
kable(TablaIndicadores,
format = "markdown",
caption = "Tabla N°2. Indicadores estadísticos de posición (Moda) - Variable Litología",
align = c("l", "c"))
| Variable | Moda |
|---|---|
| Litología (agrupada) | Sin registro |
# Tabla profesional con gt
tabla_indicadores_gt <- TablaIndicadores %>%
gt() %>%
tab_header(
title = md("**Tabla N° 2**"),
subtitle = md("Indicadores estadísticos de posición (Moda) - Variable Litología")
) %>%
tab_source_note(source_note = md("Autor: Grupo 3")) %>%
cols_label(Variable = md("**Variable**"), Moda = md("**Moda**")) %>%
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"
) %>%
tab_style(style = cell_text(weight = "bold", align = "center"),
locations = cells_column_labels())
tabla_indicadores_gt
| Tabla N° 2 | |
| Indicadores estadísticos de posición (Moda) - Variable Litología | |
| Variable | Moda |
|---|---|
| Litología (agrupada) | Sin registro |
| Autor: Grupo 3 | |
La variable litología tiene como valor más frecuente sin registro.