library(knitr)
library(kableExtra)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following object is masked from 'package:kableExtra':
##
## group_rows
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
TDF_frecuencia <- as.data.frame(table(datos$Operator.Name))
colnames(TDF_frecuencia) <- c("Empresa", "ni")
TDF_categoria <- TDF_frecuencia %>%
mutate(
Clasificacion_Impacto = case_when(
ni >= 100 ~ "Alto Impacto (ni >= 100)",
ni >= 25 & ni < 100 ~ "Medio Impacto (25 <= ni < 100)",
ni < 25 ~ "Bajo Impacto (ni < 25)",
TRUE ~ "FALTANTE"
)
)
datos_con_impacto <- datos %>%
left_join(TDF_categoria %>% select(Empresa, Clasificacion_Impacto),
by = c("Operator.Name" = "Empresa"))
tabla_pura_impacto <- table(datos_con_impacto$Clasificacion_Impacto)
Nombres <- names(tabla_pura_impacto)
ni <- as.numeric(tabla_pura_impacto)
ni_total <- sum(ni)
hi_num <- (ni / ni_total) * 100
hi_red <- round(hi_num, 2)
TDF_base <- data.frame(Categoria = Nombres, ni = ni, hi = hi_red)
orden_categorias <- c("Alto Impacto (ni >= 100)",
"Medio Impacto (25 <= ni < 100)",
"Bajo Impacto (ni < 25)")
TDF_ordenada <- TDF_base %>%
mutate(Categoria = factor(Categoria, levels = orden_categorias)) %>%
arrange(Categoria) %>%
mutate(Categoria = as.character(Categoria))
Sumatoria <- data.frame(Categoria = "TOTAL", ni = ni_total, hi = 100.00)
TDF_final <- bind_rows(TDF_ordenada, Sumatoria)
TDF_final$hi <- sprintf("%.2f", TDF_final$hi)
colnames(TDF_final) <- c("Clasificacion de Impacto", "ni", "hi (%)")
kable(TDF_final, align = 'c',
col.names = c("Clasificacion de Impacto", "ni", "hi (%)"),
caption = "Tabla de frecuencia por Impacto") %>%
kable_styling(full_width = FALSE, position = "center",
bootstrap_options = c("striped", "hover", "condensed"))
Tabla de frecuencia por Impacto
|
Clasificacion de Impacto
|
ni
|
hi (%)
|
|
Alto Impacto (ni >= 100)
|
1077
|
38.53
|
|
Medio Impacto (25 <= ni < 100)
|
959
|
34.31
|
|
Bajo Impacto (ni < 25)
|
759
|
27.16
|
|
TOTAL
|
2795
|
100.00
|
library(dplyr)
library(ggplot2)
#Gráfico de barras
TDF_categoria <- TDF_frecuencia %>%
mutate(Clasificacion_Impacto = case_when(
ni >= 100 ~ "Alto Impacto (ni ≥ 100)",
ni >= 25 & ni < 100 ~ "Medio Impacto (25 ≤ ni < 100)",
ni < 25 ~ "Bajo Impacto (ni < 25)",
TRUE ~ "FALTANTE"
))
datos_con_impacto <- datos %>%
left_join(TDF_categoria %>% select(Empresa, Clasificacion_Impacto),
by = c("Operator.Name" = "Empresa"))
datos_grafico <- as.data.frame(table(datos_con_impacto$Clasificacion_Impacto))
colnames(datos_grafico) <- c("Clasificacion", "ni")
datos_grafico$Clasificacion <- reorder(datos_grafico$Clasificacion, datos_grafico$ni)
ggplot(datos_grafico, aes(x = Clasificacion, y = ni, fill = Clasificacion)) +
geom_bar(stat = "identity", color = "black", width = 0.6, alpha = 0.5) +
scale_fill_manual(values = c(
"Alto Impacto (ni ≥ 100)" = "red",
"Medio Impacto (25 ≤ ni < 100)" = "red",
"Bajo Impacto (ni < 25)" = "red"
)) +
labs(title = "Gráfica 2 Accidentes por Nivel de Impacto",
y = "Cantidad de Accidentes", x = "") +
theme_minimal() +
theme(legend.position = "none")

library(ggplot2)
library(dplyr)
datos_grafico <- TDF_ordenada %>%
mutate(
ni = as.numeric(ni),
Etiqueta_Leyenda = paste0(Categoria, " (", hi, "%)"),
Etiqueta_Leyenda = factor(Etiqueta_Leyenda, levels = unique(Etiqueta_Leyenda))
)
ggplot(datos_grafico, aes(x = "", y = ni, fill = Etiqueta_Leyenda)) +
geom_bar(stat = "identity", width = 1, color = "white", alpha = 0.6) +
coord_polar("y", start = 0) +
theme_void() +
theme(
legend.position = "right",
legend.text = element_text(size = 8),
legend.title = element_text(size = 10, face = "bold")
) +
labs(title = "Gráfico 3 Distribución de Accidentes por Impacto",
fill = "Leyenda") +
scale_fill_brewer(palette = "Oranges", direction = -1)

#Gráfico de barras
TDF_categoria <- TDF_frecuencia %>%
mutate(Clasificacion_Impacto = case_when(
ni >= 100 ~ "Alto Impacto (ni ≥ 100)",
ni >= 25 & ni < 100 ~ "Medio Impacto (25 ≤ ni < 100)",
ni < 25 ~ "Bajo Impacto (ni < 25)",
TRUE ~ "FALTANTE"
))
datos_con_impacto <- datos %>%
left_join(TDF_categoria %>% select(Empresa, Clasificacion_Impacto),
by = c("Operator.Name" = "Empresa"))
datos_grafico <- as.data.frame(table(datos_con_impacto$Clasificacion_Impacto))
colnames(datos_grafico) <- c("Clasificacion", "ni")
datos_grafico$Clasificacion <- reorder(datos_grafico$Clasificacion, datos_grafico$ni)
ggplot(datos_grafico, aes(x = Clasificacion, y = ni, fill = Clasificacion)) +
geom_bar(stat = "identity", color = "black", width = 0.6, alpha = 0.6) +
scale_fill_manual(values = c(
"Alto Impacto (ni ≥ 100)" = "orange",
"Medio Impacto (25 ≤ ni < 100)" = "orange",
"Bajo Impacto (ni < 25)" = "pink"
)) +
scale_y_continuous(limits = c(0, 5000)) +
labs(title = "Gráfica 3 Distribución General por Impacto",
y = "Cantidad de Accidentes", x = "") +
theme_minimal() +
theme(legend.position = "none")
