#1.Carga de librerias
library(knitr)
library(kableExtra)
library(gt)
## Warning: package 'gt' was built under R version 4.5.3
# 2. Leer datos
setwd("~/Camila/Estadística")
datos <- read.csv("Datos cambiados..csv",
                  header = TRUE, 
                  sep = ",", dec = "." )
# 3. Selección de la variable 

# Limpiar variable
datos$AQI[datos$AQI == "-"] <- NA
datos$AQI <- as.numeric(datos$AQI)

# Eliminar NA
AQI <- na.omit(datos$AQI)
# 4. Tabla de distribución de frecuencia

# Crear intervalos
intervalos <- cut(
  AQI,
  breaks = seq(0, 500, by = 50),
  include.lowest = TRUE
)

# Tabla de frecuencias
TDF <- table(intervalos)

Tabla <- as.data.frame(TDF)

# Frecuencia absoluta
ni <- Tabla$Freq

# Frecuencia relativa
hi <- (ni / sum(ni)) * 100

# Frecuencias acumuladas ascendentes
Niasc <- cumsum(ni)
Hiasc <- cumsum(hi)

# Frecuencias acumuladas descendentes
Nidsc <- rev(cumsum(rev(ni)))
Hidsc <- rev(cumsum(rev(hi)))

# Tabla final
Tabla_final <- data.frame(
  `Intervalos AQI` = Tabla$intervalos,
  ni = ni,
  `hi_(%)` = round(hi, 2),
  Ni_asc = Niasc,
  `Hi_asc_(%)` = round(Hiasc, 2),
  Ni_dsc = Nidsc,
  `Hi_dsc_(%)` = round(Hidsc, 2)
)

# Fila total
totales <- data.frame(
  `Intervalos AQI` = "Total",
  ni = sum(ni),
  `hi_(%)` = 100,
  Ni_asc = "-",
  `Hi_asc_(%)` = "-",
  Ni_dsc = "-",
  `Hi_dsc_(%)` = "-"
)

# Unir tabla + totales
TDF_total <- rbind(Tabla_final, totales)

# Tabla formato gt
tabla_gt <- TDF_total %>%
  
  gt() %>%
  
  tab_header(
    title = md("*Tabla N°1*"),
    subtitle = md("**Tabla de distribución de frecuencias del AQI 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"
  ) %>%
  
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = nrow(TDF_total)
    )
  )
# Mostrar tabla
tabla_gt
Tabla N°1
Tabla de distribución de frecuencias del AQI en India
Intervalos.AQI ni hi_... Ni_asc Hi_asc_... Ni_dsc Hi_dsc_...
[0,50] 1341 5.52 1341 5.52 24307 100
(50,100] 8224 33.83 9565 39.35 22966 94.48
(100,150] 6211 25.55 15776 64.9 14742 60.65
(150,200] 2618 10.77 18394 75.67 8531 35.1
(200,250] 1619 6.66 20013 82.33 5913 24.33
(250,300] 1162 4.78 21175 87.11 4294 17.67
(300,350] 1439 5.92 22614 93.03 3132 12.89
(350,400] 898 3.69 23512 96.73 1693 6.97
(400,450] 504 2.07 24016 98.8 795 3.27
(450,500] 291 1.20 24307 100 291 1.2
Total 24307 100.00 - - - -
Autor: Grupo 1