FECHA: 05/12/2025
city_day_2_ <- read.csv("city_day (2).csv")
##Estadística Descriptiva
#Variable Continua Benceno
#Llumitasig Daniela
#Cargar datos
datos<-read.csv("~/Documentos R/TABLAS A/city_day (2).csv")
#Extraccion de los "-" de la variable Benzene debido a que son valores inexistentes,
# para un mejor analisis, cambia tamaño muestral de 29531 a 23908
city_day_2_$Benzene[city_day_2_$Benzene == "-"] <- NA
city_day_2_$Benzene <- as.numeric(city_day_2_$Benzene)
Benzene <- na.omit(city_day_2_$Benzene)
#Filtrar Benzene
Benzene <- subset(city_day_2_$Benzene, city_day_2_$Benzene >= 0)
# Calcular el mínimo y máximo de NH3
min_Benzene <- min(Benzene)
max_Benzene <- max(Benzene)
#Calcular rango
R <- max_Benzene - min_Benzene
#Calcular intervalos
K <- floor(1 + 3.33 * log10(length(Benzene)))
#Calcular amplitud
A <-R/K
#Limite inferior
Li <-round(seq(from=min_Benzene,to=max_Benzene-A,by=A),2)
#Limite superior
Ls <-round(seq(from=min_Benzene+A,to=max_Benzene,by=A),2)
#Marca de clase
Mc <- (Li+Ls)/2
# Vector vacío para guardar las frecuencias de cada clase
ni <- c()
for (i in 1:K) {
if (i < K) {
# Para las primeras clases: [Li , Ls)
ni[i] <- length(subset(Benzene, Benzene >= Li[i] & Benzene < Ls[i]))
} else {
# Para la última clase: [Li , Ls]
ni[i] <- length(subset(Benzene, Benzene >= Li[i] & Benzene <= Ls[i]))
}
}
N <- sum(ni)
hi <- (ni / N) * 100
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_asc <- cumsum(hi)
Hi_desc <- rev(cumsum(rev(hi)))
Intervalo <- paste0("[", round(Li,2), " - ", round(Ls,2), ")")
Intervalo[length(Intervalo)] <- paste0("[", round(Li[length(Li)],2), " - ",
round(Ls[length(Ls)],2), "]")
TDF_Benzene <- data.frame(
Intervalo = Intervalo,
Mc = round(Mc, 2),
ni = ni,
hi = round(hi, 2),
Ni_asc = Ni_asc,
Ni_desc = Ni_desc,
Hi_asc = round(Hi_asc, 2),
Hi_desc = round(Hi_desc, 2)
)
# Crear fila de totales para Benzene
totales <- data.frame(
Intervalo = "Totales",
Mc = "-",
ni = sum(ni),
hi = round(sum(hi), 2),
Ni_asc = "-",
Ni_desc = "-",
Hi_asc= "-",
Hi_desc = "-"
)
TDF_Benzene <- rbind(TDF_Benzene, totales)
length(Li)
## [1] 15
library(gt)
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
TDF_Benzene %>%
gt() %>%
tab_header(
title = md("*Tabla Nro. 1*"),
subtitle = md("*Distribución de frecuencias de la concentración de Benceno en el estudio de calidad del aire en la India*")
) %>%
tab_source_note(
source_note = md("Fuente:Datos procesados por el autor a partir del archivo *city_day_(2).csv*")
) %>%
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"
)
| Tabla Nro. 1 |
| Distribución de frecuencias de la concentración de Benceno en el estudio de calidad del aire en la India |
| Intervalo |
Mc |
ni |
hi |
Ni_asc |
Ni_desc |
Hi_asc |
Hi_desc |
| [0 - 30.34) |
15.17 |
23698 |
99.12 |
23698 |
23908 |
99.12 |
100 |
| [30.34 - 60.67) |
45.51 |
121 |
0.51 |
23819 |
210 |
99.63 |
0.88 |
| [60.67 - 91.01) |
75.84 |
31 |
0.13 |
23850 |
89 |
99.76 |
0.37 |
| [91.01 - 121.34) |
106.18 |
8 |
0.03 |
23858 |
58 |
99.79 |
0.24 |
| [121.34 - 151.68) |
136.51 |
4 |
0.02 |
23862 |
50 |
99.81 |
0.21 |
| [151.68 - 182.01) |
166.84 |
8 |
0.03 |
23870 |
46 |
99.84 |
0.19 |
| [182.01 - 212.35) |
197.18 |
4 |
0.02 |
23874 |
38 |
99.86 |
0.16 |
| [212.35 - 242.68) |
227.51 |
3 |
0.01 |
23877 |
34 |
99.87 |
0.14 |
| [242.68 - 273.02) |
257.85 |
2 |
0.01 |
23879 |
31 |
99.88 |
0.13 |
| [273.02 - 303.35) |
288.18 |
7 |
0.03 |
23886 |
29 |
99.91 |
0.12 |
| [303.35 - 333.69) |
318.52 |
1 |
0.00 |
23887 |
22 |
99.91 |
0.09 |
| [333.69 - 364.02) |
348.86 |
0 |
0.00 |
23887 |
21 |
99.91 |
0.09 |
| [364.02 - 394.36) |
379.19 |
1 |
0.00 |
23888 |
21 |
99.92 |
0.09 |
| [394.36 - 424.69) |
409.52 |
4 |
0.02 |
23892 |
20 |
99.93 |
0.08 |
| [424.69 - 455.03] |
439.86 |
16 |
0.07 |
23908 |
16 |
100 |
0.07 |
| Totales |
- |
23908 |
100.00 |
- |
- |
- |
- |
| Fuente:Datos procesados por el autor a partir del archivo city_day_(2).csv |
#HISTOGRAMA
# Histograma
histo_Benzene <- hist(
Benzene,
main = "Gráfica Nº1: Distribución de la Concentración de Benceno (µg/m³)\nEstudio de Calidad del Aire en India (2015-2020)",
xlab = "Concentración de Benceno (µg/m³)",
ylab = "Frecuencia",
col = "pink",
border = "black"
)

# PROCESO DE SIMPLIFICACIÓN PARA BENCENO
Lis<-histo_Benzene$breaks [1:10]
Lss<-histo_Benzene$breaks [2:11]
MCs<-(Lis+Lis)/2
nis<-histo_Benzene$counts
his <- (nis / N) * 100
Nis_asc <- cumsum(nis)
His_asc <- cumsum(his)
Nis_desc <- rev(cumsum(rev(nis)))
His_desc <- rev(cumsum(rev(his)))
Intervalos <- paste0("[", round(Lis,2), " - ", round(Lss,2), ")")
Intervalos[length(Intervalos)] <- paste0("[", round(Lis[length(Lis)],2),
" - ", round(Lss[length(Lss)],2), "]")
TDF_Benzenesimplificado <- data.frame(
Intervalo = Intervalos,
MC = round(MCs, 2),
ni = nis,
hi= round(his, 2),
Ni_ascendente = Nis_asc,
Hi_ascendente = round(His_asc, 2),
Ni_descendente = Nis_desc,
Hi_descendente = round(His_desc, 2)
)
colnames(TDF_Benzenesimplificado) <- c(
"Intervalo",
"MC",
"ni",
"hi(%)",
"Ni_asc",
"Hi_asc (%)",
"Ni_desc",
"Hi_desc (%)"
)
totaless <- data.frame(
Intervalo = "Totales",
MC = "-",
ni = sum(nis), # suma total de ni
hi = sum(his), # suma total de hi (%)
Ni_ascendente = "-",
Ni_descendente = "-",
Hi_ascendente = "-",
Hi_descendente = "-"
)
colnames(totaless) <- c(
"Intervalo",
"MC",
"ni",
"hi(%)",
"Ni_asc",
"Hi_asc (%)",
"Ni_desc",
"Hi_desc (%)"
)
# Agregar al final de la tabla
TDF_Benzenesimplificado <- rbind(TDF_Benzenesimplificado, totaless)
#Tabla 2
TDF_Benzenesimplificado %>%
gt() %>%
tab_header(
title = md("*Tabla Nro. 2*"),
subtitle = md("*Distribución de frecuencia simplificada de concentración de Benceno, estudio calidad del aire en India*")
) %>%
tab_source_note(
source_note = md("Fuente: Datos procesados por el autor a partir del archivo *city_day (2)*")
) %>%
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"
)
| Tabla Nro. 2 |
| Distribución de frecuencia simplificada de concentración de Benceno, estudio calidad del aire en India |
| Intervalo |
MC |
ni |
hi(%) |
Ni_asc |
Hi_asc (%) |
Ni_desc |
Hi_desc (%) |
| [0 - 50) |
0 |
23809 |
99.59 |
23809 |
99.59 |
23908 |
100 |
| [50 - 100) |
50 |
45 |
0.19 |
23854 |
99.77 |
99 |
0.41 |
| [100 - 150) |
100 |
8 |
0.03 |
23862 |
99.81 |
54 |
0.23 |
| [150 - 200) |
150 |
11 |
0.05 |
23873 |
99.85 |
46 |
0.19 |
| [200 - 250) |
200 |
5 |
0.02 |
23878 |
99.87 |
35 |
0.15 |
| [250 - 300) |
250 |
8 |
0.03 |
23886 |
99.91 |
30 |
0.13 |
| [300 - 350) |
300 |
1 |
0.00 |
23887 |
99.91 |
22 |
0.09 |
| [350 - 400) |
350 |
1 |
0.00 |
23888 |
99.92 |
21 |
0.09 |
| [400 - 450) |
400 |
18 |
0.08 |
23906 |
99.99 |
20 |
0.08 |
| [450 - 500] |
450 |
2 |
0.01 |
23908 |
100 |
2 |
0.01 |
| Totales |
- |
23908 |
100.00 |
- |
- |
- |
- |
| Fuente: Datos procesados por el autor a partir del archivo city_day (2) |
#GRAFICAS
#Histogramas local
hist(Benzene, breaks = 11,
main = "Gráfica N°2: Distribución de la Concentración de Benceno
presente en el estudio de la calidad del aire en India ",
xlab = " Benzene (µg/m3)",
ylab = "Cantidad",
ylim = c(0, max(nis)),
col = "pink",
cex.main = 0.9,
cex.lab = 1,
cex.axis = 0.9,
xaxt = "n")
axis(1, at = histo_Benzene$breaks,
labels = histo_Benzene$breaks, las = 1,
cex.axis = 0.9)

#Histograma global
hist(Benzene, breaks = 11,
main = "Gráfica N°3:Distribución de la Concentración de Benceno
presente en el estudio de la calidad del aire en India",
xlab = "Benzene (µg/m3)",
ylab = "Cantidad",
ylim = c(0, length(Benzene)),
col = "pink",
cex.main = 1,
cex.lab = 1,
cex.axis = 0.9,
xaxt = "n")
axis(1, at = histo_Benzene$breaks,
labels = histo_Benzene$breaks, las = 1,
cex.axis = 0.9)

#Histograma porcentual local
n <- as.numeric(nrow(TDF_Benzenesimplificado))
pos<-barplot(
TDF_Benzenesimplificado$`hi(%)`[1:(n-1)],
space = 0,
main = "Gráfica No. 4:Distribución concentración de Benceno en el estudio de
calidad del aire en la India",
ylab = "Porcentaje (%)",
xlab = "Benzene (µg/m3)",
names.arg = TDF_Benzenesimplificado$MC[1:(n-1)],
col = "pink"
)
axis(side = 1,
at = pos,
labels = TDF_Benzenesimplificado$MC[1:(nrow(TDF_Benzenesimplificado)-1)],
tck = -0.04,
las = 1)

#Histograma porcentual global
TDF_Benzenesimplificado$`hi (%)` <- as.numeric(TDF_Benzenesimplificado$`hi(%)`)
post<-barplot(TDF_Benzenesimplificado$`hi(%)`[1:(nrow(TDF_Benzenesimplificado)-1)],
space = 0,
col = "pink",
main = "Gráfica N°5:Distribución de la Concentración de Benceno
Estudio de calidad del aire en la India",
xlab = "Benzene (µg/m3)",
ylab = "Porcentaje (%)",
names.arg = TDF_Benzenesimplificado$MC[1:(nrow(TDF_Benzenesimplificado)-1)],
ylim = c(0,100),
xaxt = "n")
axis(side = 1,
at = post,
labels = TDF_Benzenesimplificado$MC[1:(nrow(TDF_Benzenesimplificado)-1)],
tck = -0.02)

#Diagrama de caja
CajaBenzene<-boxplot(Benzene, horizontal = T,col = "orange", border = "black",
main= "Gráfica No.6: Distribución de la concentración de Benceno
Estudio de calidad del aire en la India",
xlab="Benzene (µg/m3)")

#Ojiva local
# Ojiva ascendente
plot(Lss, Nis_asc, type = "b", main = "Gráfica N°7:Distribución de Frecuencias Ascendente y Descendente
de la Concentración de Benceno",
xlab = "Benzene (µg/m3)",
ylab = "Cantidad", pch = 19,col="red")
# Ojiva descendente
lines(Lis, Nis_desc, type = "b", col = "blue", pch = 19)

# Porcentaje
# Ojiva ascendente
plot(Lss, His_asc,
type = "b",
main = " Gráfica N°8:Distribución Porcentual Ascendente y Descendente
de la Concentración de Benceno",
xlab = "Benzene(µg/m3)",
ylab = "Porcentaje %",
col = "blue",
pch = 19,
yaxt = "n",
ylim = c(99, 100)
)
axis(2, at = c(99, 100), labels = c("99", "100"))
# Ojiva descendente
lines(Lis, His_desc,
type = "b",
col = "red",
pch = 19)
