CARGA DE DATOS
library(dplyr)
library(stringr)
library(gt)
datos <- read.csv("D:/mineralogia_2500.csv")
ASIGNACION DE VARIABLES
## ASIGNACION DE VARIABLES
# Limpieza básica
df_mineralogia <- data.frame(
mineralogia = trimws(datos$MINERALOGIA)
)
# Ver valores reales
unique(df_mineralogia$mineralogia)
## [1] "Plagioclasa" "Cuarzo" "Feldespato" "Biotita" "Hornblenda"
# Convertir a formato uniforme
df_mineralogia$mineralogia <- str_to_title(
df_mineralogia$mineralogia
)
# Orden de categorías
orden_mineralogia <- c(
"Cuarzo",
"Feldespato",
"Biotita",
"Plagioclasa",
"Hornblenda"
)
# Factor ordinal
df_mineralogia$mineralogia <- factor(
df_mineralogia$mineralogia,
levels = orden_mineralogia,
ordered = TRUE
)
TABLA DE DISTRIBUCION DE CANTIDAD
df_mineralogia$mineralogia <- factor(
df_mineralogia$mineralogia,
levels = orden_mineralogia,
ordered = TRUE
)
TDF_mineralogia <- df_mineralogia %>%
count(mineralogia, name = "ni") %>%
arrange(mineralogia)
# Calculamos los porcentajes redondeados
TDF_mineralogia <- TDF_mineralogia %>%
mutate(hi = round(ni / sum(ni) * 100, 0))
# Ajuste por redondeo:
# la diferencia se le asigna a la categoría con mayor frecuencia
diferencia <- 100 - sum(TDF_mineralogia$hi)
if (diferencia != 0) {
pos_max <- choosing_row <- which.max(TDF_mineralogia$ni)
TDF_mineralogia$hi[pos_max] <-
TDF_mineralogia$hi[pos_max] + diferencia
}
# Tabla
tabla_mineralogia <- TDF_mineralogia %>%
gt() %>%
tab_header(
title = "Tabla N° 1",
subtitle = "Distribución de la Mineralogía"
) %>%
grand_summary_rows(
columns = c(ni, hi),
fns = list(
Total = ~sum(., na.rm = TRUE)
),
fmt = list(
~fmt_number(., decimals = 0)
)
)
tabla_mineralogia
| Tabla N° 1 | |||
| Distribución de la Mineralogía | |||
| mineralogia | ni | hi | |
|---|---|---|---|
| Cuarzo | 720 | 29 | |
| Feldespato | 610 | 24 | |
| Biotita | 430 | 17 | |
| Plagioclasa | 515 | 21 | |
| Hornblenda | 225 | 9 | |
| Total | — | 2,500 | 100 |
# Agregamos fila TOTAL
tabla_final_mineralogia <- TDF_mineralogia %>%
mutate(
mineralogia = as.character(mineralogia)
)
tabla_final_mineralogia <- bind_rows(
tabla_final_mineralogia,
data.frame(
mineralogia = "TOTAL",
ni = sum(tabla_final_mineralogia$ni),
hi = sum(tabla_final_mineralogia$hi)
)
)
# TABLA ESQUELETO
tabla_mineralogia_gt <- tabla_final_mineralogia %>%
gt() %>%
tab_header(
title = md("**Tabla Nº2**"),
subtitle = md("Distribución ordinal de la mineralogía")
) %>%
cols_label(
mineralogia = "Mineralogía",
ni = "Frecuencia",
hi = "Porcentaje (%)"
) %>%
cols_align(
align = "center",
columns = everything()
) %>%
fmt_number(
columns = c(ni, hi),
decimals = 0
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = mineralogia == "TOTAL"
)
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
)
tabla_mineralogia_gt
| Tabla Nº2 | ||
| Distribución ordinal de la mineralogía | ||
| Mineralogía | Frecuencia | Porcentaje (%) |
|---|---|---|
| Cuarzo | 720 | 29 |
| Feldespato | 610 | 24 |
| Biotita | 430 | 17 |
| Plagioclasa | 515 | 21 |
| Hornblenda | 225 | 9 |
| TOTAL | 2,500 | 100 |
| Autor: Grupo 2 | ||
# Gráfica Nº1: Frecuencia absoluta
barplot(TDF_mineralogia$ni,
main = "Gráfica Nº1: Frecuencia de la Mineralogía",
xlab = "Mineralogía",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDF_mineralogia$mineralogia,
cex.names = 0.8,
las = 2)
# Gráfica Nº2: Frecuencia absoluta ajustada
barplot(TDF_mineralogia$ni,
main = "Gráfica Nº2: Frecuencia de la Mineralogía ",
xlab = "Mineralogía",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDF_mineralogia$mineralogia,
cex.names = 0.8,
las = 2,
ylim = c(0, max(TDF_mineralogia$ni) * 1.2))
# Gráfica Nº3: Frecuencia relativa
barplot(TDF_mineralogia$hi,
main = "Gráfica Nº3: Porcentaje de la Mineralogía",
xlab = "Mineralogía",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDF_mineralogia$mineralogia,
cex.names = 0.8,
las = 2)
# Gráfica Nº4: Frecuencia relativa escala completa
barplot(TDF_mineralogia$hi,
main = "Gráfica Nº4: Porcentaje de la Mineralogía ",
xlab = "Mineralogía",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDF_mineralogia$mineralogia,
cex.names = 0.8,
las = 2,
ylim = c(0, 100))
# Gráfico circular
par(mar = c(4, 4, 4, 10))
colores <- rainbow(length(TDF_mineralogia$hi))
pie(TDF_mineralogia$hi,
col = colores,
main = "Distribución de la Mineralogía",
labels = NA)
legend("right",
legend = paste(TDF_mineralogia$mineralogia,
TDF_mineralogia$hi, "%"),
fill = colores,
title = "MINERALES",
bty = "o",
xpd = TRUE,
inset = c(-0.35, 0))
# Moda
moda_mineralogia <- TDF_mineralogia[
TDF_mineralogia$ni == max(TDF_mineralogia$ni), ]
moda_mineralogia
## mineralogia ni hi
## 1 Cuarzo 720 29
# Mediana
TDF_mineralogia <- TDF_mineralogia %>%
mutate(Ni = cumsum(ni))
N <- sum(TDF_mineralogia$ni)
mediana_mineralogia <- TDF_mineralogia %>%
filter(Ni >= N/2) %>%
slice(1)
mediana_mineralogia
## mineralogia ni hi Ni
## 1 Feldespato 610 24 1330