knitr::opts_chunk$set(echo = TRUE)
datos <- read.csv("Datos Mineros.csv",
header = TRUE,
sep = ";",
dec = ".",
fileEncoding = "latin1")
Clasificacion <- datos$CLASSIFICATION
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)
# Convertimos a dataframe
df_clas <- data.frame(variable = Clasificacion, stringsAsFactors = FALSE)
# Agrupación por palabras clave
df_clas$grupo <- case_when(
str_detect(df_clas$variable, regex("FALL|SLIP", ignore_case = TRUE)) ~ "CAIDAS",
str_detect(df_clas$variable, regex("HAND|HANDTOOLS|HANDLING", ignore_case = TRUE)) ~ "MANUALES",
str_detect(df_clas$variable, regex("DUST|RESPIRATORY", ignore_case = TRUE)) ~ "POLVO Y RESPIRATORIO",
str_detect(df_clas$variable, regex("EXPLOS", ignore_case = TRUE)) ~ "EXPLOSIVOS",
str_detect(df_clas$variable, regex("HAULAGE", ignore_case = TRUE)) ~ "TRANSPORTE",
str_detect(df_clas$variable, regex("DISEASE|ILLNESS|DISORDERS", ignore_case = TRUE)) ~ "ENFERMEDADES",
str_detect(df_clas$variable, regex("MACHINERY", ignore_case = TRUE)) ~ "MAQUINARIA",
str_detect(df_clas$variable, regex("FIRE", ignore_case = TRUE)) ~ "INCENDIOS",
TRUE ~ "OTROS"
)
TDFgrupoFinal <- df_clas %>%
group_by(grupo) %>%
summarise(ni = n(), .groups = "drop") %>%
mutate(hi = round((ni / sum(ni)) * 100, 0))
TDFgrupoFinalCompleto <- rbind(
TDFgrupoFinal,
data.frame(
grupo = "TOTAL",
ni = sum(TDFgrupoFinal$ni),
hi = 100
)
)
print(TDFgrupoFinalCompleto)
## # A tibble: 10 × 3
## grupo ni hi
## <chr> <int> <dbl>
## 1 CAIDAS 1401 28
## 2 ENFERMEDADES 145 3
## 3 EXPLOSIVOS 6 0
## 4 INCENDIOS 63 1
## 5 MANUALES 1854 37
## 6 MAQUINARIA 535 11
## 7 OTROS 514 10
## 8 POLVO Y RESPIRATORIO 58 1
## 9 TRANSPORTE 369 7
## 10 TOTAL 4945 100
tabla_clasificacion <- TDFgrupoFinalCompleto %>%
gt() %>%
tab_header(
title = "Tabla N° 1",
subtitle = "Distribución de Frecuencias Agrupadas de Accidentes Mineros"
) %>%
tab_source_note(
source_note = "Autor: Grupo1"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = grupo == "TOTAL")
)
tabla_clasificacion
| Tabla N° 1 | ||
| Distribución de Frecuencias Agrupadas de Accidentes Mineros | ||
| grupo | ni | hi |
|---|---|---|
| CAIDAS | 1401 | 28 |
| ENFERMEDADES | 145 | 3 |
| EXPLOSIVOS | 6 | 0 |
| INCENDIOS | 63 | 1 |
| MANUALES | 1854 | 37 |
| MAQUINARIA | 535 | 11 |
| OTROS | 514 | 10 |
| POLVO Y RESPIRATORIO | 58 | 1 |
| TRANSPORTE | 369 | 7 |
| TOTAL | 4945 | 100 |
| Autor: Grupo1 | ||
#Comprobación del tamaño
'Suma de ni: 4945'
## [1] "Suma de ni: 4945"
'Suma de hi: 100 %'
## [1] "Suma de hi: 100 %"
#FRECUENCIAS ABSOLUTAS LOCAL(ni)
barplot(TDFgrupoFinal$ni,
main = "Gráfica Nº1: Frecuencia de Accidentes Mineros por Grupo (Local)",
xlab = "Grupo de Accidentes",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDFgrupoFinal$grupo,
cex.names = 0.4,
las = 2)
#FRECUENCIAS ABSOLUTAS GLOBAL(ni)
barplot(TDFgrupoFinal$ni,
main = "Gráfica Nº2: Frecuencia de Accidentes Mineros por Grupo (Global)",
xlab = "Grupo de Accidentes",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDFgrupoFinal$grupo,
cex.names = 0.4,
las = 2,
ylim = c(0, max(TDFgrupoFinal$ni) * 1.2))
Creamos el diagrama de barras con la frecuencia relativa
barplot(TDFgrupoFinal$hi,
main = "Gráfica Nº3: Porcentaje de Accidentes Mineros por Grupo (Local)",
xlab = "Grupo de Accidentes",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDFgrupoFinal$grupo,
cex.names = 0.4,
las = 2,
ylim = c(0, max(TDFgrupoFinal$hi) * 1.2))
#FRECUENCIAS RELATIVAS GLOBAL(hi)
barplot(TDFgrupoFinal$hi,
main = "Gráfica Nº4: Porcentaje de Accidentes Mineros por Grupo (Global)",
xlab = "Grupo de Accidentes",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDFgrupoFinal$grupo,
cex.names = 0.9,
las = 2,
ylim = c(0, 100))
Creamos el sector circular para tener una mejor visualización del porcentaje de incidencia de un echo o fenómeno, usando la frecuencia relativa.
#DIAGRAMA CIRCULAR (hi)
Colores <- colorRampPalette(c("lightskyblue", "darkblue"))
etiquetas <- paste(TDFgrupoFinal$hi, "%", sep = "")
pie(TDFgrupoFinal$hi,
radius = 0.7,
col = Colores(nrow(TDFgrupoFinal)),
main = "Gráfica Nº5: Porcentaje de Accidentes Mineros por Grupo",
labels = etiquetas)
legend(x = 1, y = 0,
title = "Grupos",
legend = TDFgrupoFinal$grupo,
fill = Colores(nrow(TDFgrupoFinal)),
cex = 0.8,
title.cex = 1)
# MODA
moda_clasificacion <- TDFgrupoFinal[TDFgrupoFinal$ni == max(TDFgrupoFinal$ni), ]
print(moda_clasificacion)
## # A tibble: 1 × 3
## grupo ni hi
## <chr> <int> <dbl>
## 1 MANUALES 1854 37
'1 MANUALES 1854 37'
## [1] "1 MANUALES 1854 37"