Verificamos que rstudio nos lea correctamente los datos
datos <- read.csv("Datos Mineros.csv",
header = TRUE,
sep = ";",
dec = ".",
fileEncoding = "latin1")
Ocupation <- datos$OCCUPATION
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(stringr)
library(gt)
df_ocu <- data.frame(variable = Ocupation)
df_ocu$variable <- str_trim(df_ocu$variable)
Se agrupo por parametros las cuales se repetian o tienen algo en comun.
# AGRUPACIÓN
df_ocu$grupo <- case_when(
str_detect(df_ocu$variable, regex("OPERATOR|DRIVER|LOADER|TRUCK|SHOVEL|GRADER|CRANE|FORKLIFT|HOIST|EXCAVATOR", ignore_case = TRUE)) ~ "OPERADORES DE MAQUINARIA",
str_detect(df_ocu$variable, regex("LABORER|HELPER|WORKER|CLEAN|JANITOR|SWEEPER|ROUSTABOUT|GROUND|YARD", ignore_case = TRUE)) ~ "TRABAJADORES GENERALES",
str_detect(df_ocu$variable, regex("MECHANIC|MAINTENANCE|REPAIR|WELDER|ELECTRIC|PLUMBER|MACHINIST", ignore_case = TRUE)) ~ "MANTENIMIENTO / MECÁNICOS",
str_detect(df_ocu$variable, regex("FOREMAN|SUPERVISOR|MANAGER|SUPERINTENDENT|LEADMAN|BOSS", ignore_case = TRUE)) ~ "SUPERVISORES / JEFES",
str_detect(df_ocu$variable, regex("MINER|DRILL|BOLT|BLAST|LONGWALL|SCOOP|RAMCAR|SHOT", ignore_case = TRUE)) ~ "MINERÍA DIRECTA",
str_detect(df_ocu$variable, regex("WAREHOUSE|SUPPLY|STORE|PALLET|BAGGER|PACKAGER", ignore_case = TRUE)) ~ "ALMACÉN / LOGÍSTICA",
str_detect(df_ocu$variable, regex("CLERK|SURVEY|DRAFT|LAB|INSPECT|SAFETY|TECHNIC", ignore_case = TRUE)) ~ "ADMINISTRATIVO / TÉCNICO",
str_detect(df_ocu$variable, regex("NO VALUE FOUND", ignore_case = TRUE)) ~ "NO DECLARADO",
TRUE ~ "OTROS"
)
La variable Ocupación fue operacionalizada como una variable ordinal y jerarquizada conforme a un criterio de complejidad funcional creciente, considerando el grado de especialización técnica, el nivel de responsabilidad jerárquica y la magnitud de exposición a los procesos operativos del sistema minero, desde categorías sin información registrada hasta funciones de supervisión y dirección operativa.
orden_ocupacion <- c(
"NO DECLARADO",
"OTROS",
"ADMINISTRATIVO / TÉCNICO",
"ALMACÉN / LOGÍSTICA",
"TRABAJADORES GENERALES",
"OPERADORES DE MAQUINARIA",
"MANTENIMIENTO / MECÁNICOS",
"MINERÍA DIRECTA",
"SUPERVISORES / JEFES"
)
df_ocu$grupo <- factor(
df_ocu$grupo,
levels = orden_ocupacion,
ordered = TRUE
)
TDFocuFinal <- df_ocu %>%
count(grupo, name = "ni") %>%
arrange(grupo) %>%
mutate(
hi = round((ni / sum(ni)) * 100, 0)
)
# Totales
TDFocuFinalCompleto <- rbind(
TDFocuFinal,
data.frame(grupo = "TOTAL", ni = sum(TDFocuFinal$ni), hi = 100)
)
print(TDFocuFinalCompleto)
## grupo ni hi
## 1 NO DECLARADO 591 12
## 2 OTROS 249 5
## 3 ADMINISTRATIVO / TÉCNICO 36 1
## 4 ALMACÉN / LOGÍSTICA 4 0
## 5 TRABAJADORES GENERALES 814 16
## 6 OPERADORES DE MAQUINARIA 1784 36
## 7 MANTENIMIENTO / MECÁNICOS 1094 22
## 8 MINERÍA DIRECTA 118 2
## 9 SUPERVISORES / JEFES 255 5
## 10 TOTAL 4945 100
tabla_ocupation <- TDFocuFinalCompleto %>%
gt() %>%
tab_header(
title = md("Tabla N° 1"),
subtitle = md("Distribución de Frecuencias Agrupadas por Ocupación (Ordinal)")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 1")
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = grupo == "TOTAL")
)
tabla_ocupation
| Tabla N° 1 | ||
| Distribución de Frecuencias Agrupadas por Ocupación (Ordinal) | ||
| grupo | ni | hi |
|---|---|---|
| NO DECLARADO | 591 | 12 |
| OTROS | 249 | 5 |
| ADMINISTRATIVO / TÉCNICO | 36 | 1 |
| ALMACÉN / LOGÍSTICA | 4 | 0 |
| TRABAJADORES GENERALES | 814 | 16 |
| OPERADORES DE MAQUINARIA | 1784 | 36 |
| MANTENIMIENTO / MECÁNICOS | 1094 | 22 |
| MINERÍA DIRECTA | 118 | 2 |
| SUPERVISORES / JEFES | 255 | 5 |
| TOTAL | 4945 | 100 |
| Autor: Grupo 1 | ||
#Comprobación del tamaño
sum(TDFocuFinal$ni)
## [1] 4945
barplot(TDFocuFinal$ni,
main = "Grfica Nº1: Frecuencia de Accidentes por Ocupación (Local)",
xlab = "Grupo de ocupación",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDFocuFinal$grupo,
las = 2,
cex.names = 0.7,
ylim = c(0, max(TDFocuFinal$ni) * 1.2))
barplot(TDFocuFinal$ni,
main = "Gráfica Nº2: Frecuencia de Accidentes por Ocupación (Global)",
xlab = "Grupo de Daños",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg =TDFocuFinal$grupo,
cex.names = 0.4,
las = 2,
ylim = c(0, max(TDFocuFinal$ni) * 1.2))
barplot(TDFocuFinal$hi,
main = "Gráfica Nº3: Porcentaje de Accidentes Mineros por Ocupación (Local)",
xlab = "Grupo de ocupación",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDFocuFinal$hi,
las = 2,
ylim = c(0, 36),
cex.names = 0.7)
barplot(TDFocuFinal$hi,
main = "Gráfica Nº4:Porcentaje de Accidentes Mineros por Ocupación (Global)",
xlab = "Naturaleza del Daño",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDFocuFinal$grupo,
cex.names = 0.4,
las = 2,
ylim = c(0, 100))
Colores <- colorRampPalette(c("lightskyblue", "darkblue"))
# Porcentajes
porcentajes <- paste(TDFocuFinal$hi, "%", sep = "")
pie(TDFocuFinal$hi,
radius = 0.7,
col = Colores(nrow(TDFocuFinal)),
main = "Gráfica Nº5: Porcentaje de Accidentes por Ocupación",
labels = NA) # ← clave: sin etiquetas en el pie
legend("topright",
inset = c(-0.06, 0.3),
xpd = TRUE,
title = "Grupo de Ocupación",
legend = paste(TDFocuFinal$grupo, "-", porcentajes),
fill = Colores(nrow(TDFocuFinal)),
cex = 0.55)
moda_OCUPACION <- TDFocuFinal[TDFocuFinal$ni == max(TDFocuFinal$ni), ]
print(moda_OCUPACION)
## grupo ni hi
## 6 OPERADORES DE MAQUINARIA 1784 36
'6 OPERADORES DE MAQUINARIA 1784 36'
## [1] "6 OPERADORES DE MAQUINARIA 1784 36"
# Mediana
TDFocuFinal_med <- TDFocuFinal %>%
mutate(
Ni = cumsum(ni),
Hi = cumsum(hi)
)
TDFocuFinal_med
## grupo ni hi Ni Hi
## 1 NO DECLARADO 591 12 591 12
## 2 OTROS 249 5 840 17
## 3 ADMINISTRATIVO / TÉCNICO 36 1 876 18
## 4 ALMACÉN / LOGÍSTICA 4 0 880 18
## 5 TRABAJADORES GENERALES 814 16 1694 34
## 6 OPERADORES DE MAQUINARIA 1784 36 3478 70
## 7 MANTENIMIENTO / MECÁNICOS 1094 22 4572 92
## 8 MINERÍA DIRECTA 118 2 4690 94
## 9 SUPERVISORES / JEFES 255 5 4945 99
total <- sum(TDFocuFinal$ni)
pos_mediana <- total / 2
mediana_ocupacion <- TDFocuFinal_med %>%
filter(Ni >= pos_mediana) %>%
slice(1)
mediana_ocupacion
## grupo ni hi Ni Hi
## 1 OPERADORES DE MAQUINARIA 1784 36 3478 70