FECHA: 11/12/2025
# Extraemos los datos
df <- read.csv("soil_pollution_diseases.csv", sep = ";", stringsAsFactors = FALSE)
# 1. Cargar dataset CSV
df <- read.csv("soil_pollution_diseases.csv", sep = ";", stringsAsFactors = FALSE)
# 2. Convertir la columna a fecha (formato día/mes/año)
df$Date_Reported <- as.Date(df$Date_Reported, format = "%d/%m/%Y")
# 3. Crear columnas separadas de día, mes y año
df$Day <- as.integer(format(df$Date_Reported, "%d"))
df$Month <- as.integer(format(df$Date_Reported, "%m"))
df$Year <- as.integer(format(df$Date_Reported, "%Y"))
# Extraemos la variable Discreta
Año<-df$Year
Año<-na.omit(df$Year)
# Tabla de Distribución de Frecuencias
TDF.Año<-table(Año)
# Elementos para la tabla de distribución de Frecuencia
Tabla_Año<-as.data.frame(TDF.Año)
hi<-(Tabla_Año$Freq/sum(Tabla_Año$Freq))*100
ni<-Tabla_Año$Freq
Tabla_Año<-data.frame(Tabla_Año,hi)
Niasc<-cumsum(ni)
Hiasc<-cumsum(hi)
Nidsc<-rev(cumsum(rev(ni)))
Hidsc<-rev(cumsum(rev(hi)))
Tabla_año_final<-data.frame(Tabla_Año$Año,
Tabla_Año$Freq,
Tabla_Año$hi,
Niasc,
round(Hiasc,2),
Nidsc,
round(Hidsc,2))
colnames(Tabla_año_final)<-c("Año","ni","hi (%)",
"Ni_asc","Hi_asc(%)",
"Ni_dsc","Hi_dsc(%)")
# Totales
Tabla_año_final$Año <- as.character(Tabla_año_final$Año)
totales <- c(Año="Total",ni= sum(ni),
hi= sum(hi),
Niasc="-",
Nidsc="-",
Hiasc= "-",
Hidsc="-")
TDF_años_total<-rbind(Tabla_año_final,totales)
TDF_años_total
#Formato tabla
library(gt)
tabla_años_gt <- TDF_años_total %>%
gt() %>%
tab_header(
title = md("*Tabla N°1*"),
subtitle = md("**Tabla de distribución de los años del estudio**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black"
) %>%
# poner en negrita la fila "Total"
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Año == "Total"
)
)
tabla_años_gt
| Tabla N°1 |
| Tabla de distribución de los años del estudio |
| Año |
ni |
hi (%) |
Ni_asc |
Hi_asc(%) |
Ni_dsc |
Hi_dsc(%) |
| 2023 |
1116 |
37.2 |
1116 |
37.2 |
3000 |
100 |
| 2024 |
1497 |
49.9 |
2613 |
87.1 |
1884 |
62.8 |
| 2025 |
387 |
12.9 |
3000 |
100 |
387 |
12.9 |
| Total |
3000 |
100 |
- |
- |
- |
- |
| Autor: Grupo 3 |
# Gráfico de barras - Frecuencia absoluta por Año
barplot(ni,
main = "Gráfica N°1: Distribución de la contaminación del suelo según el Año",
xlab = "Año",
ylab = "Cantidad de registros",
col = "skyblue",
ylim = c(0, max(ni)),
names.arg = Tabla_Año$Año,
las = 2,
cex.names = 0.8)

# Gráfico de barras - Porcentaje por Año
barplot(hi,
main = "Gráfica N°2: Distribución porcentual de los años en los
que se realizó el estudio de contaminación del suelo",
xlab = "Año",
ylab = "%",
col = "lightgreen",
names.arg = Tabla_Año$Año, # Años extraídos de tu tabla
las = 2,
cex.names = 0.8)

# Gráfico de barras - Frecuencia absoluta global por Año
barplot(ni,
main = "Gráfica N°3: Distribución de la contaminación del suelo según el Año",
xlab = "Año",
ylab = "Cantidad de registros",
col = "skyblue",
ylim = c(0, 3000), # Límite superior fijo como en tu ejemplo
names.arg = Tabla_Año$Año, # Años de tu tabla
las = 2,
cex.names = 0.8)

# Gráfico de barras - Porcentaje global por Año
barplot(hi,
main = "Gráfica N°4: Distribución porcentual de los años en los
que se realizó el estudio de contaminación del suelo",
xlab = "Año",
ylab = "%",
col = "lightgreen",
ylim = c(0, 100),
names.arg = Tabla_Año$Año,
las = 2,
cex.names = 0.8)

# DIAGRAMA DE CAJA Y BIGOTE - Años
boxplot(Año,
horizontal = TRUE,
col = "brown",
main = "Gráfica N°5: Distribución de los Años del Estudio de
Contaminación del Suelo",
xlab = "Año")

# Diagrama de Ojiva Ascendente y Descendente
x_pos <- 1:length(Tabla_Año$Año)
# Graficar puntos de Frecuencia Descendente acumuladas
plot(x_pos, Nidsc,
main = "Gráfica N°6: Distribución Ascendentes
y Descendentes de los años del estudio de contaminación del suelo",
xlab = "Años",
ylab = "Cantidad",
col = "orange",
type = "p",
lwd = 3,
xaxt = "n")
# Graficar puntos de Frecuencia Ascendente
lines(x_pos, Niasc,
col = "green",
type = "p",
lwd = 3)
# Personalizar etiquetas del eje X
axis(side = 1,
at = x_pos,
labels = Tabla_Año$Año,
las = 1,
cex.axis = 0.9)

# Diagrama de Ojiva Ascendente y Descendente Porcentual
x_pos <- 1:length(Tabla_Año$hi)
# Graficar puntos de Frecuencia Descendente porcentual acumuladas
plot(x_pos, Hidsc,
main = "Gráfica N°7: Distribución porcentual
Ascendentes y Descendentes de los años que se llevó a cabo el
estudio de contaminación del suelo",
xlab = "Años",
ylab = "%",
col = "red",
type = "p",
lwd = 2,
xaxt = "n")
# Graficar puntos de Frecuencia Ascendente porcentual
lines(x_pos, Hiasc,
col = "blue",
type = "p",
lwd = 3)
# Personalizar etiquetas del eje X
axis(side = 1,
at = x_pos,
labels = Tabla_Año$Año,
las = 1,
cex.axis = 0.9)

# INDICADORES ESTADISTICOS
# Indicadores de Tendencia Central
# Media aritmética
media <- round(mean(Año),0)
media
## [1] 2024
# Moda
max_frecuencia <- max(Tabla_Año$Freq)
moda <- Tabla_Año$Año[Tabla_Año$Freq == max_frecuencia]
moda
## [1] 2024
## Levels: 2023 2024 2025
# Mediana
mediana <- median(Año)
mediana
## [1] 2024
# INDICADORES DE DISPERSIÓN #
# Varianza
varianza <- var(Año)
varianza
## [1] 0.4420984
# Desviación Estándar
sd <- sd(Año)
sd
## [1] 0.6649048
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 0.03
# INDICADORES DE FORMA #
# Asimetría
library(e1071)
asimetria <- skewness(Año, type = 2)
asimetria
## [1] 0.3185022
# Curtosis
curtosis <- kurtosis(Año)
curtosis
## [1] -0.7905203
# TABLA RESUMEN FINAL
tabla_indicadores <- data.frame(
"Variable" = c("Año"),
"Rango" = c(paste0("[", min(Año), " ; ", max(Año), "]")),
"X" = c(round(media,0)),
"Me" = c(round(mediana,0)),
"Mo" = c(paste(moda, collapse = ", ")),
"V" = c(round(varianza,2)),
"Sd" = c(round(sd,0)),
"Cv" = c(cv),
"As" = c(round(asimetria,2)),
"K" = c(round(curtosis,2)),
"Valores_Atipicos" = "No hay presencia de valores atípicos"
)
library(gt)
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(
title = md("*Tabla N°2*"),
subtitle = md("**Indicadores estadísticos de la variable Año**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black"
) %>%
# Negrita para el nombre de la variable
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Variable == "Año"
)
)
tabla_indicadores_gt
| Tabla N°2 |
| Indicadores estadísticos de la variable Año |
| Variable |
Rango |
X |
Me |
Mo |
V |
Sd |
Cv |
As |
K |
Valores_Atipicos |
| Año |
[2023 ; 2025] |
2024 |
2024 |
2024 |
0.44 |
1 |
0.03 |
0.32 |
-0.79 |
No hay presencia de valores atípicos |
| Autor: Grupo 3 |