# Tema: Estadística Descriptiva
# Autor: Camila Zambrano
# Fecha: 28/05/2026
library(knitr)
library(kableExtra)
library(readr)
library(gt)
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
setwd("~/CAMILA")
datos <- read.csv("Datos cambiados..csv",
header = TRUE,
sep = ",", dec = "." )
estado <- datos$State
TDF_estado <- data.frame(table(estado))
# Frecuencia absoluta
ni <- TDF_estado$Freq
# Frecuencia relativa
hi <- round((ni / sum(ni)) * 100, 2)
estado <- TDF_estado$estado
TDF_estado <- data.frame(estado, ni, hi)
# Agregra fila total
sumatoria <- data.frame(
estado = "TOTAL",
ni = sum(ni),
hi = 100
)
TDF_estado_suma <- rbind(TDF_estado,
sumatoria)
colnames(TDF_estado_suma) <- c("estado",
"ni", "hi")
View(TDF_estado_suma)
TDF_estado_suma %>%
gt() %>%
tab_header(
title = md("*Tabla N°1*"),
subtitle = md("**Distribución de
frecuencias de registros de calidad de
aire en India por Estado**")
) %>%
tab_source_note(
md("Autor: Grupo 1")
) %>%
tab_style(
style = cell_borders(
sides = c("top", "bottom"),
color = "black",
weight = px(2),
style = "solid"
),
locations = cells_column_labels()
) %>%
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 N°1 | ||
| Distribución de frecuencias de registros de calidad de aire en India por Estado | ||
| estado | ni | hi |
|---|---|---|
| Andhra Pradesh | 2413 | 8.17 |
| Assam | 502 | 1.70 |
| Bihar | 1858 | 6.29 |
| Chandigarh | 304 | 1.03 |
| Delhi | 2009 | 6.80 |
| Gujarat | 2009 | 6.80 |
| Haryana | 1679 | 5.69 |
| Jharkhand | 1169 | 3.96 |
| Karnataka | 2009 | 6.80 |
| Kerala | 1436 | 4.86 |
| Madhya Pradesh | 289 | 0.98 |
| Maharashtra | 2009 | 6.80 |
| Meghalaya | 310 | 1.05 |
| Mizoram | 113 | 0.38 |
| Odisha | 1863 | 6.31 |
| Punjab | 1221 | 4.13 |
| Rajasthan | 1114 | 3.77 |
| Tamil Nadu | 2395 | 8.11 |
| Telangana | 2006 | 6.79 |
| Uttar Pradesh | 2009 | 6.80 |
| West Bengal | 814 | 2.76 |
| TOTAL | 29531 | 100.00 |
| Autor: Grupo 1 | ||
Se agruparon los estados en diferentes zonas para simplificar y organizar los datos, ya que el número de valores que puede tomar la variable ‘State’ excedió el límite de representaciones posibles en un diagrama de barras.
tabla <- data.frame(
estado = c(
"Andhra Pradesh", "Assam", "Bihar", "Chandigarh", "Delhi", "Gujarat",
"Haryana", "Jharkhand", "Karnataka", "Kerala", "Madhya Pradesh", "Maharashtra",
"Meghalaya", "Mizoram", "Odisha", "Punjab", "Rajasthan", "Tamil Nadu",
"Telangana", "Uttar Pradesh", "West Bengal"
)
)
# Asignar las zonas correspondientes a cada estado usando ifelse
tabla$Zona <- ifelse(tabla$estado %in% c("Uttar Pradesh", "Haryana", "Delhi"),
"Norte",
ifelse(tabla$estado %in% c("Gujarat", "Rajasthan", "Maharashtra", "Goa",
"Chandigarh", "Punjab"),
"Oeste",
ifelse(tabla$estado %in% c("Tamil Nadu", "Kerala"),
"Sur",
ifelse(tabla$estado %in% c("Bihar", "Odisha", "Assam",
"WestBengal", "Jharkhand",
"Meghalaya", "Mizoram", "Tripura"),
"Este",
ifelse(tabla$estado %in% c("Madhya Pradesh",
"Telangana", "Karnataka",
"Andhra Pradesh"),
"Centro", NA)))))
# Verificar la asignación correcta de zonas
table(tabla$estado, tabla$Zona)
##
## Centro Este Norte Oeste Sur
## Andhra Pradesh 1 0 0 0 0
## Assam 0 1 0 0 0
## Bihar 0 1 0 0 0
## Chandigarh 0 0 0 1 0
## Delhi 0 0 1 0 0
## Gujarat 0 0 0 1 0
## Haryana 0 0 1 0 0
## Jharkhand 0 1 0 0 0
## Karnataka 1 0 0 0 0
## Kerala 0 0 0 0 1
## Madhya Pradesh 1 0 0 0 0
## Maharashtra 0 0 0 1 0
## Meghalaya 0 1 0 0 0
## Mizoram 0 1 0 0 0
## Odisha 0 1 0 0 0
## Punjab 0 0 0 1 0
## Rajasthan 0 0 0 1 0
## Tamil Nadu 0 0 0 0 1
## Telangana 1 0 0 0 0
## Uttar Pradesh 0 0 1 0 0
## West Bengal 0 0 0 0 0
# Contar las frecuencias de cada zona en la columna "Zona"
datos_zona <- datos %>%
left_join(tabla, by = c("State" = "estado")) %>%
rename(Zona = Zona.y) %>%
select(-Zona.x)
TDF_zona_final <- datos_zona %>%
filter(!is.na(Zona)) %>%
count(Zona, name = "ni") %>%
mutate(hi = round(ni / sum(ni) * 100, 2))
TDF_zona_final <- TDF_zona_final %>%
filter(Zona != "TOTAL")
TDF_zona_final <- bind_rows(
TDF_zona_final,
data.frame(
Zona = "TOTAL",
ni = 29531,
hi = 100
)
)
TDF_zona_final$hi[TDF_zona_final$Zona == "TOTAL"] <- 100
TDF_zona_final <- TDF_zona_final %>% dplyr::select(Zona, ni, hi)
TDF_zona_final %>%
gt() %>%
tab_header(
title = md("*Tabla N°2*"),
subtitle = md("**Distribución de frecuencias de las Zonas agrupadas en el
estudio de la calidad de aire en India**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 1")
) %>%
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 N°2 | ||
| Distribución de frecuencias de las Zonas agrupadas en el estudio de la calidad de aire en India | ||
| Zona | ni | hi |
|---|---|---|
| Centro | 6717 | 23.39 |
| Este | 5815 | 20.25 |
| Norte | 5697 | 19.84 |
| Oeste | 6657 | 23.18 |
| Sur | 3831 | 13.34 |
| TOTAL | 29531 | 100.00 |
| Autor: Grupo 1 | ||
TDF_zonas_sintotal <-
TDF_zona_final[TDF_zona_final$Zona !=
"TOTAL", ]
barplot(TDF_zonas_sintotal$ni,
main = "Gráfica N°1: Distribución de las zonas agrupadas en el
estudio de la calidad del aire en India",
xlab = "Zona",
ylab = "Cantidad",
col = "skyblue",
las = 1,
cex.names = 0.6,
names.arg = TDF_zonas_sintotal$Zona)
barplot(TDF_zonas_sintotal$ni,
main = "Gráfica N°2: Distribución de las zonas agrupadas en el
estudio de la calidad del aire en India",
xlab = "Zona",
col = "pink",
ylim = c(0 , 29531),
las = 1,
cex.names = 0.6,
names.arg = TDF_zonas_sintotal$Zona)
title(ylab = "Cantidad", mgp = c(3.5, 1, 0))
barplot(TDF_zonas_sintotal$hi,
main = "Gráfica N°3: Distribución porcentual de las zonas agrupadas
en el estudio de la calidad del aire en India",
xlab = "Zona",
ylab = "Porcentaje",
col = "skyblue",
las = 1,
cex.names = 0.6,
names.arg = TDF_zonas_sintotal$Zona)
barplot(TDF_zonas_sintotal$hi,
main = "Gráfica N°4: Distribución de las zonas agrupadas en el
estudio de la calidad del aire en India",
xlab = "Zona",
ylab = "Porcentaje",
col = "pink",
ylim = c(0 , 100),
las = 1,
cex.names = 0.6,
names.arg = TDF_zonas_sintotal$Zona)
labels_info <- sprintf("%.2f%%",
TDF_zonas_sintotal$hi)
pie(TDF_zonas_sintotal$hi,
main = "Gráfica N°5: Distribución de los estados agrupados por zonas en el
estudio de la calidad del aire en India",
radius = 1.0,
labels = labels_info,
col = heat.colors(length(
TDF_zonas_sintotal$hi)),
cex = 0.9,
cex.main = 1)
legend("topright",
legend = TDF_zonas_sintotal$Zona,
fill =
heat.colors(length(
TDF_zonas_sintotal$hi)),
cex = 0.8,
title = "Leyenda")
frecuencia_max <- max(TDF_zonas_sintotal$ni)
modas <- TDF_zonas_sintotal$Zona[
TDF_zonas_sintotal$ni == frecuencia_max]
Mo_zona <- paste(modas)
Mo_zona
## [1] "Centro"
tabla_indicadores <- data.frame(
"Variable" = c("Zona"),
"Rango" = "-",
"X" = "-",
"Me" = "-",
"Mo" = c(Mo_zona),
"V" = "-",
"Sd" = "-",
"Cv" = "-",
"As" = "-",
"K" = "-",
"Valores Atipicos" = "-")
library(knitr)
kable(tabla_indicadores, align = 'c',
caption = "Conclusiones de la variable Estado")
| Variable | Rango | X | Me | Mo | V | Sd | Cv | As | K | Valores.Atipicos |
|---|---|---|---|---|---|---|---|---|---|---|
| Zona | - | - | - | Centro | - | - | - | - | - | - |
El valor más frecuente de la variable Estado se encuentra en la Zona Centro.