1. Carga de datos, librerias y extracción de la variable

#Carga de Librerias 
library(kableExtra)
library(knitr)
library(dplyr)
## 
## Attaching package: '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
library(magrittr)
library(magrittr)
#Carga de datos
getwd()
## [1] "/cloud/project"
setwd("/cloud/project")
datos<- read.csv("china_water_pollution_data.csv",header = TRUE, sep = ",", dec = ".")
# Extracción de variable Observación
Observaciones <- datos$Remarks
#Limpiar la variable Observaciones
Observaciones <- datos$Remarks
Observaciones[Observaciones == ""] <- NA
Observaciones <- na.omit(Observaciones)

2. Tabla de distribución de frecuencia

TDF_observaciones <- data.frame(table(Observaciones))
ni <- TDF_observaciones$Freq
hi <- round((ni / sum(ni)) * 100, 2)
Observaciones <- TDF_observaciones$Observaciones
TDF_observaciones <- data.frame(Observaciones, ni, hi)
TDF_observaciones$Observaciones <- as.character(TDF_observaciones$Observaciones)
TDF_observaciones$Observaciones[TDF_observaciones$Observaciones == ""] <- "-"
Sumatoria <- data.frame(Observaciones = "TOTAL", ni = sum(ni), hi = sum(hi))
TDF_observaciones_suma <- rbind(TDF_observaciones, Sumatoria)
colnames(TDF_observaciones_suma) <- c("Observaciones", "ni", "hi(%)")
colnames(TDF_observaciones) <- c("Observaciones", "ni", "hi (%)")
# Tabla
kable(TDF_observaciones_suma, align = 'c', 
      caption = "Tabla N°1: Tabla de Distribuciónn de Frecuencias de las 
 Observaciones de estudio de contaminación del agua en China en el año 2023") %>%
  kable_styling(full_width = FALSE, position = "center", 
                bootstrap_options = c("striped", "hover", "condensed"))
Tabla N°1: Tabla de Distribuciónn de Frecuencias de las Observaciones de estudio de contaminación del agua en China en el año 2023
Observaciones ni hi(%)
High pollution spike detected 780 34.70
Monitoring recommended 745 33.14
Requires attention 723 32.16
TOTAL 2248 100.00

3. Gráficas

3.1 Diagrama de barras Local

barplot(ni, main = "Gráfica N°1: Distribución de frecuencias de las 
  Observaciones de estudio de contaminación
  del agua en China en el año 2023",
        xlab = "Observaciones",
        ylab = "Cantidad",
        col = "skyblue",
        ylim = c(0,800),
        las = 1,
        cex.names = 0.8,
        names.arg = TDF_observaciones$Observaciones)

3.2 Diagrama de barras porcentual local

barplot(hi, main = "Gráfica N°2: Distribución porcentual de las Observaciones
de estudio de la contaminación del agua en China en el año 2023",
        xlab = "Observaciones",
        ylab = "Porcentaje",
        col = "green",
        ylim = c(0,40),
        las = 1,
        cex.names = 0.8,
        names.arg = TDF_observaciones$Observaciones)

3.3 Diagrama de barras Global

# Diagrama de barras global
barplot(ni, main = "Gráfica N°3: Distribución de frecuencias de las
Observaciones de estudio de la contaminación del agua 
en China en el año 2023",
        xlab = "Observaciones",
        ylab = "Cantidad",
        col = "pink",
        ylim = c(0,2248),
        las=1,
        cex.names = 0.8,
        names.arg = TDF_observaciones$Observaciones)

barplot(hi, main = "Gráfica N°4: Distribución de frecuencias porcentual de 
las Observaciones de estudio de la contaminacion del agua
           en China en el año 2023",
        xlab = "Obsevaciones",
        ylab = "Porcentaje (%)",
        col = "skyblue",
        ylim = c(0,100),
        las = 1,
        cex.names = 0.8,
        names.arg = TDF_observaciones$Observaciones)

labels_info <- paste(TDF_observaciones$`hi (%)`, "%")
pie(hi,
    main = "Gráfica N°5 Distribución porcentual de las Observaciones de estudio
      de la contaminación del agua en China en el año 2023",
    radius = 1,
    labels = labels_info,
    col = rev(heat.colors(10)),
    cex = 0.8,
    cex.main = 1)
legend("topright",
       legend = TDF_observaciones$Observaciones,
       fill = colores <- c(rev(heat.colors(10))),
       cex = 0.6,
       title = "Leyenda")

4. Indicadores

# Cálculo de la Moda
frecuencias <- table(Observaciones)
moda <- names(frecuencias)[frecuencias == max(frecuencias)]

# Mostrar la moda
moda
## [1] "High pollution spike detected" "Monitoring recommended"       
## [3] "Requires attention"

5. Tabla de Indicadores

tabla_indicadores <- data.frame("Variable" =c("Observaciones"),
                                "Rango" = c("-"),
                                "X" = c("-"),
                                "Me" = c("-"),
                                "Mo" = c(Observaciones),
                                "V" = c("-"),
                                "Sd" = c("-"),
                                "Cv" = c("-"),
                                "As" = c("-"),
                                "K" = c("-"),
                                "Valores Atipicos" = 
                                "No hay valores atípicos")
library(knitr)
kable(tabla_indicadores, align = 'c', caption = "Conclusiones de la variable
      Ciudad")
Conclusiones de la variable Ciudad
Variable Rango X Me Mo V Sd Cv As K Valores.Atipicos
Observaciones - - - High pollution spike detected - - - - - No hay valores atípicos
Observaciones - - - Monitoring recommended - - - - - No hay valores atípicos
Observaciones - - - Requires attention - - - - - No hay valores atípicos

6. Conclusiones

La variable Observaciones indica una tendencia que gira entorno a requiere atención, se recomienda monitoreo y se detectó un pico alto de contaminación. Por lo tanto el comportamiento de la variable indica una variabilidad considerable en las condiciones del agua por lo que, no es consistentemente buena y requiere monitoreo continuo y acciones correctivas para evitar un mayor deterioro ambiental.