Verificamos que rstudio nos lea correctamente los datos
datos <- read.csv("Datos Mineros.csv",
header = TRUE,
sep = ";",
dec = ".",
fileEncoding = "latin1")
DAÑOS_NATURALEZA <- datos$NATURE_INJURY
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_daños <- data.frame(variable = DAÑOS_NATURALEZA)
Agrupamos por palabras claves ya que los datos eran muy extensos y al momento de hacer las Tablas de Frecuencia se realiza una tabla extensa
# AGRUPACIÓN POR PALABRAS CLAVE
df_daños$grupo <- case_when(
str_detect(df_daños$variable, regex("CUT|LACERATION", ignore_case = TRUE)) ~ "CORTES",
str_detect(df_daños$variable, regex("FRACTURE|BROKEN", ignore_case = TRUE)) ~ "FRACTURAS",
str_detect(df_daños$variable, regex("BURN", ignore_case = TRUE)) ~ "QUEMADURAS",
str_detect(df_daños$variable, regex("BRUISE|CONTUSION", ignore_case = TRUE)) ~ "GOLPES",
str_detect(df_daños$variable, regex("SPRAIN|STRAIN", ignore_case = TRUE)) ~ "ESGUINCES",
str_detect(df_daños$variable, regex("DUST|RESPIRATORY", ignore_case = TRUE)) ~ "RESPIRATORIO",
TRUE ~ "OTROS"
)
TDFdañosFinal <- df_daños %>%
group_by(grupo) %>%
summarise(ni = n()) %>%
mutate(hi = round((ni / sum(ni)) * 100, 0))
# Agregar totales
total_ni <- sum(TDFdañosFinal$ni)
total_hi <- 100
TDFdañosFinalCompleto <- rbind(
TDFdañosFinal,
data.frame(grupo = "TOTAL", ni = total_ni, hi = total_hi)
)
print(TDFdañosFinalCompleto)
## # A tibble: 8 × 3
## grupo ni hi
## <chr> <int> <dbl>
## 1 CORTES 1017 21
## 2 ESGUINCES 1365 28
## 3 FRACTURAS 664 13
## 4 GOLPES 311 6
## 5 OTROS 1371 28
## 6 QUEMADURAS 145 3
## 7 RESPIRATORIO 72 1
## 8 TOTAL 4945 100
tabla_daños <- TDFdañosFinalCompleto %>%
gt() %>%
tab_header(
title = md("Tabla N° 1"),
subtitle = md("Tabla de Distribucion de Frecuencias Absolutas y Relativas Simples de la Naturaleza de Daños")
) %>%
tab_source_note(
source_note = md("Autor: Grupo1")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
column_labels.border.bottom.color = "black",
row.striping.include_table_body = TRUE
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = grupo == "TOTAL"
)
)
tabla_daños
| Tabla N° 1 | ||
| Tabla de Distribucion de Frecuencias Absolutas y Relativas Simples de la Naturaleza de Daños | ||
| grupo | ni | hi |
|---|---|---|
| CORTES | 1017 | 21 |
| ESGUINCES | 1365 | 28 |
| FRACTURAS | 664 | 13 |
| GOLPES | 311 | 6 |
| OTROS | 1371 | 28 |
| QUEMADURAS | 145 | 3 |
| RESPIRATORIO | 72 | 1 |
| TOTAL | 4945 | 100 |
| Autor: Grupo1 | ||
#Comprobación del tamaño
sum(TDFdañosFinal$ni)
## [1] 4945
sum(TDFdañosFinal$hi)
## [1] 100
#FRECUENCIAS ABSOLUTAS LOCAL(ni)
barplot(TDFdañosFinal$ni,
main = "Gráfica Nº1: Frecuencia por Naturaleza de Daños (Local)",
xlab = "Naturaleza del Daño",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDFdañosFinal$grupo,
cex.names = 0.4,
las = 2)
#FRECUENCIAS ABSOLUTAS GLOBAL(ni)
barplot(TDFdañosFinal$ni,
main = "Gráfica Nº2: Frecuencia de Daños por Grupo (Global)",
xlab = "Grupo de Daños",
ylab = "Cantidad (ni)",
col = "steelblue",
names.arg = TDFdañosFinal$grupo,
cex.names = 0.4,
las = 2,
ylim = c(0, max(TDFdañosFinal$ni) * 1.2))
barplot(TDFdañosFinal$hi,
main = "Gráfica Nº3: Porcentaje por Naturaleza de Daño (Local)",
xlab = "Naturaleza del Daño",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDFdañosFinal$grupo,
cex.names = 0.4,
las = 2,
ylim = c(0, max(TDFdañosFinal$hi) * 1.2))
barplot(TDFdañosFinal$hi,
main = "Gráfica Nº4: Porcentaje por Naturaleza de Daño (Global)",
xlab = "Naturaleza del Daño",
ylab = "Porcentaje (%)",
col = "steelblue",
names.arg = TDFdañosFinal$grupo,
cex.names = 0.4,
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(round(TDFdañosFinal$hi), "%", sep="")
pie(TDFdañosFinal$hi,
radius = 0.8,
col = Colores(nrow(TDFdañosFinal)),
main = "Gráfica Nº5: Porcentaje por Naturaleza de Daño",
labels = etiquetas)
legend(x = 1.2, y = 0.2,
title = "Daños",
legend = TDFdañosFinal$grupo,
fill = Colores(nrow(TDFdañosFinal)),
cex = 0.6,
title.cex = 1)
#MODA
moda_DAÑOS_NATURALEZA <- TDFdañosFinal[TDFdañosFinal$ni == max(TDFdañosFinal$ni), ]
print(moda_DAÑOS_NATURALEZA)
## # A tibble: 1 × 3
## grupo ni hi
## <chr> <int> <dbl>
## 1 OTROS 1371 28
'1 OTROS 1371 28'
## [1] "1 OTROS 1371 28"