library(readxl)
library(ggplot2)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# CARGA DE DATOS
datos <- read_excel("database.xlsx")
## Warning: Expecting numeric in C2189 / R2189C3: got 'Accident Year'
## Warning: Expecting numeric in C2215 / R2215C3: got 'Accident Year'
# VARIABLE: ACCIDENT STATE
accident_state <- datos$`Accident State`
tabla_freq_state <- table(accident_state)
tabla_rel_state <- prop.table(tabla_freq_state)
tabla_pct_state <- tabla_rel_state * 100
# Data frame base
df_state <- data.frame(
Accident_State = names(tabla_freq_state),
Frecuencia = as.vector(tabla_freq_state),
Frec_Relativa = as.vector(tabla_rel_state),
Porcentaje = as.vector(tabla_pct_state)
)
# TOP 10 + OTROS
df_state_top <- df_state %>%
arrange(desc(Frecuencia)) %>%
mutate(Accident_State = ifelse(row_number() > 10, "OTROS", Accident_State)) %>%
group_by(Accident_State) %>%
summarise(
Frecuencia = sum(Frecuencia),
Frec_Relativa = sum(Frec_Relativa),
Porcentaje = sum(Porcentaje)
)
# GRÁFICA N°1 – FRECUENCIA
ggplot(df_state_top,
aes(x = Accident_State, y = Frecuencia)) +
geom_col(fill = "steelblue") +
labs(title = "Gráfica No.1: Distribución de Frecuencia Accidentes por Estado",
x = "Estado", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# GRÁFICA N°2 – FRECUENCIA RELATIVA
ggplot(df_state_top,
aes(x = Accident_State, y = Frec_Relativa)) +
geom_col(fill = "lightgreen") +
labs(title = "Gráfica No.2: Distribución de Frecuencia Relativa por Estado",
x = "Estado", y = "Frecuencia Relativa") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# GRÁFICA N°3 – PORCENTAJE
ggplot(df_state_top,
aes(x = Accident_State, y = Porcentaje)) +
geom_col(fill = "orange") +
labs(title = "Gráfica No.3: Distribución de Porcentaje por Estado",
x = "Estado", y = "Porcentaje (%)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# VARIABLE: ACCIDENT CITY
accident_city <- datos$`Accident City`
df_city <- as.data.frame(table(accident_city))
colnames(df_city) <- c("City", "Frecuencia")
# TOP 7 (SIN OTROS)
df_city_top <- df_city %>%
arrange(desc(Frecuencia)) %>%
slice(1:7) %>%
mutate(
Porcentaje = round(Frecuencia / sum(Frecuencia) * 100, 1),
Etiqueta = paste0(City, " – ", Porcentaje, "% (", Frecuencia, ")")
)
# GRÁFICA N°4
ggplot(df_city_top,
aes(x = "", y = Frecuencia, fill = Etiqueta)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar(theta = "y") +
labs(title = "Gráfica No.4\nDistribución de Accident City",
fill = "") +
theme_void() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
legend.text = element_text(size = 10)
)
