1 Carga de datos

Verificamos que rstudio nos lea correctamente los datos

datos <- read.csv("Datos Mineros.csv",
                  header = TRUE,
                  sep = ";",
                  dec = ".",
                  fileEncoding = "latin1")

1.1 Extraemos la variable

DAÑOS_NATURALEZA <- datos$NATURE_INJURY

1.2 Cargamos Librerias

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)

2 Tabla de Distribución De Frecuencias Simples

# 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"
)

2.1 Calculamos las frecuencias absolutas y relativas simples

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

2.2 Tabla completa

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

3 Gráficas de distribución de frecuencia

3.1 Diagrama de barras ni

#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))

3.2 Diagrama de barras hi

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))

3.3 Diagrama circular

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)

4 Indicadores

#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"