PASO 2: Análisis de datos

Comienza ahora la etapa de análisis de nuestros datos. Como siempre, lo primero que debemos hacer es cargar las librerías que contienen las funciones que utilizaremos para trabajar con nuestros datos. En nuestro caso utilizaremos tidyverse que es una librería clásica de R:

library(tidyverse)

El siguiente paso es cargar los datos sobre calidad del aire del año 2017 que habíamos preparado y guardarlos en una variable que llamaremos también “q_aire2017”. Luego de cargar los datos en nuestra tabla, mostramos las seis primeras filas. Vemos que aparece una columna “X” que no necesitamos y por eso, con la función select la eliminamos para tener la tabla como nosotros queremos:

q_aire2017 <- read.csv("./calidad-del-aire/calidad-del-aire-2017.csv")
head(q_aire2017)
##   X DIA MES ANIO HORA CO_CENTENARIO NO2_CENTENARIO PM10_CENTENARIO
## 1 1   1 Ene 2017    1          0.70             NA              NA
## 2 2   1 Ene 2017    2          0.72             NA              NA
## 3 3   1 Ene 2017    3          0.72             NA              NA
## 4 4   1 Ene 2017    4          0.73             NA              NA
## 5 5   1 Ene 2017    5          0.73             NA              NA
## 6 6   1 Ene 2017    6          0.69             NA              NA
##   CO_CORDOBA NO2_CORDOBA PM10_CORDOBA CO_LA_BOCA NO2_LA_BOCA PM10_LA_BOCA
## 1       0.81          19           19         NA           2           43
## 2       0.79          16           20         NA           2           46
## 3       0.82          23           19         NA           1           46
## 4       0.81          16           20         NA           2           51
## 5       0.73          11           20         NA           2           50
## 6       0.65          11           20         NA           2           49

Si queremos que en nuestros gráficos aparezcan los meses en el orden del calendario debemos convertir la columna MES en un factor ordenado de modo que siempre respete el orden:

q_aire2017 <- mutate(q_aire2017, MES=factor(MES, 
                              levels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"), ordered=TRUE))

Ahora vamos a empezar a ver un poco nuestros datos. Por ejemplo, queremos saber en qué mes del año 2017 hubo mayor concentración de monóxido de carbono en la estación Centenario. La tabla resumen de nuestro dato la vamos a llamar “Tabla_Prom_CO_Cent2017” y los valores promedio los vamos a guardar en una variable llamada “Prom_CO_Cent” y para eso utilizaremos las funciones group_by y summarise, además utilizaremos arrange con el modificador desc para que nos muestre la tabla ordenada por valores descendentes, es decir, primero el mayor valor. Tendremos entonces dos tablas diferentes: una es TablaProm_CO_Cent2017 que es la que está ordenada por valores de mayor a menor, y otra tabla, Tabla_Prom_CO_Cent2017xMes que es la que está ordenada por meses calendario. Esto es importante ya que queremos que en los gráficos de barra aparezcan los meses ordenados según el calendario:

Tabla_Prom_CO_Cent2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_CO_Cent = mean(CO_CENTENARIO, na.rm = TRUE))
Tabla_Prom_CO_Cent2017 <- arrange(Tabla_Prom_CO_Cent2017xMes, desc(Prom_CO_Cent))
Tabla_Prom_CO_Cent2017
## # A tibble: 12 x 2
##    MES   Prom_CO_Cent
##    <ord>        <dbl>
##  1 May          0.805
##  2 Jun          0.748
##  3 Ago          0.635
##  4 Abr          0.594
##  5 Mar          0.584
##  6 Jul          0.571
##  7 Ene          0.554
##  8 Oct          0.495
##  9 Sep          0.472
## 10 Nov          0.452
## 11 Dic          0.421
## 12 Feb          0.420

Nuestro primer análisis nos muestra que Mayo fue el mes en promedio con mayor concentración de CO en la estación Centenario.
También podemos representar esto gráficamente mediante barras utilizando la función ggplot con los modificadores geom_col para especificar qué queremos representar en cada eje y ggtitle para colocarle nombre al gráfico:

Tabla_Prom_CO_Cent2017xMes <- na.omit(Tabla_Prom_CO_Cent2017) # "na.moit" omite las filas que tienen NA
ggplot(Tabla_Prom_CO_Cent2017xMes) + 
  geom_col(aes(x = MES, y = Prom_CO_Cent)) +ggtitle("Promedio mensual de CO en estación Centenario en 2017")

Para el contaminante CO, el mes que más contaminación se detectó fue Mayo. Ahora vamos a hacer un cálculo similar, en la estación Centenario, pero para los otros dos contaminantes (NO2 y PM10). Tal como hicimos con el contaminante CO, primero ordenamos la tabla de mayor a menor y luego hacemos el gráfico de barras:

Tabla_Prom_NO2_Cent2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_NO2_Cent = mean(NO2_CENTENARIO, na.rm = TRUE))
Tabla_Prom_NO2_Cent2017 <- arrange(Tabla_Prom_NO2_Cent2017xMes, desc(Prom_NO2_Cent))
Tabla_Prom_NO2_Cent2017
## # A tibble: 12 x 2
##    MES   Prom_NO2_Cent
##    <ord>         <dbl>
##  1 Jun            20.1
##  2 Ago            19.2
##  3 May            18.8
##  4 Feb            18.8
##  5 Jul            18.3
##  6 Abr            17.8
##  7 Sep            16.8
##  8 Mar            16.2
##  9 Oct            16.0
## 10 Dic            15.7
## 11 Nov            15.6
## 12 Ene            14.4
ggplot(Tabla_Prom_NO2_Cent2017xMes) + 
  geom_col(aes(x = MES, y = Prom_NO2_Cent)) +ggtitle("Promedio mensual de NO2 en estación Centenario en 2017")

Viendo la tabla y nuestro gráfico, vemos que para el NO2 el mes en el que se registró mayor contaminación fue Junio. Veamos ahora qué sucede con el contaminante PM10:

Tabla_Prom_PM10_Cent2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_PM10_Cent = mean(PM10_CENTENARIO, na.rm = TRUE))
Tabla_Prom_PM10_Cent2017 <- arrange(Tabla_Prom_PM10_Cent2017xMes, desc(Prom_PM10_Cent))
Tabla_Prom_PM10_Cent2017
## # A tibble: 12 x 2
##    MES   Prom_PM10_Cent
##    <ord>          <dbl>
##  1 Mar             33.4
##  2 Jun             28.5
##  3 Nov             26.6
##  4 Dic             25.4
##  5 Feb             24.2
##  6 Ene             22.6
##  7 Abr             22.4
##  8 May             22.2
##  9 Jul             21.5
## 10 Oct             21.2
## 11 Sep             19.7
## 12 Ago             19.0
ggplot(Tabla_Prom_PM10_Cent2017) + 
  geom_col(aes(x = MES, y = Prom_PM10_Cent)) +ggtitle("Promedio mensual de PM10 en estación Centenario en 2017")

Observando el gráfico, vemos que para PM10 el mes de mayor contaminación fue Marzo. Repitiendo la operatoria con los demás datasets podremos disponer de los demás valores (PROM_CO, PROM_NO2 y PROM_PM10) para cada una de las tres estaciones de medición (Córdoba, Centenario y La Boca) para los tres años (2017, 2018, 2019). Ya tenemos los de 2017 de la estación Centenario, los demás valores los calcularemos de la misma manera pero en un paso aparte para no hacer tan tedioso el proceso.

Pasamos entonces a hacer los cálculos restantes para los otras dos estaciones para 2017 y todo lo de 2018 y 2019 de cada uno de los contaminantes en cada una de las estaciones de medición.

PASO 3: Cálculo de los valores restantes para 2017

Ya vimos en el paso #2 cómo crear las tablas y los gráficos para los valores promedio mensuales de cada contaminante en la estación Centenario para el año 2017. Vamos ahora a calcular los demás valores para este año. Primero para PM10 para las estaciones La Boca y Córdoba:

Tabla_Prom_PM10_Boc2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_PM10_Boc = mean(PM10_LA_BOCA, na.rm = TRUE))
Tabla_Prom_PM10_Cor2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_PM10_Cor = mean(PM10_CORDOBA, na.rm = TRUE))

Ahora NO2 para las estaciones Córdoba y La Boca:

Tabla_Prom_NO2_Cor2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_NO2_Cor = mean(NO2_CORDOBA, na.rm = TRUE))
Tabla_Prom_NO2_Boc2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_NO2_Boc = mean(NO2_LA_BOCA, na.rm = TRUE))

Ahora CO en Córdoba y La Boca:

Tabla_Prom_CO_Cor2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_CO_Cor = mean(CO_CORDOBA, na.rm = TRUE))
Tabla_Prom_CO_Boc2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_CO_Boc = mean(CO_LA_BOCA, na.rm = TRUE))

Ahora ya tenemos todas nuestras tablas para el año 2017, para los tres contaminantes en las tres estaciones de medición.

PASO 4: Calcular los valores para 2018

Acá vamos a calcular los demás valores para el año 2018. Primero para CO para la estación Centenario. Lo primero que debemos hacer convertir la columna mes en un factor ordenado de modo que siempre respete el orden de los meses y luego crear la tabla igual que lo hicimos con las anteriores:

q_aire2018 <- read.csv("./calidad-del-aire/calidad-del-aire-2018.csv")
q_aire2018 <- mutate(q_aire2018, mes=factor(mes, 
                              levels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"),
                              ordered=TRUE))
Tabla_Prom_CO_Cent2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_CO_Cent = mean(co_centenario, na.rm = TRUE))

Ahora vamos a calcular CO para las otras dos estaciones:

Tabla_Prom_CO_Cor2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_CO_Cor = mean(co_cordoba, na.rm = TRUE))
Tabla_Prom_CO_Boc2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_CO_Boc = mean(co_la_boca, na.rm = TRUE))

Y ahora vamos a calcular el resto. Lo que calcularemos son los valores para PM10 y NO2 para las tres estaciones, siempre del año 2018:

# PM10 para las tres estaciones
Tabla_Prom_PM10_Cent2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_PM10_Cent = mean(pm10_centenario, na.rm = TRUE))
Tabla_Prom_PM10_Cor2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_PM10_Cor = mean(pm10_cordoba, na.rm = TRUE))
Tabla_Prom_PM10_Boc2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_PM10_Boc = mean(pm10_la_boca, na.rm = TRUE))
# NO2 para las tres estaciones
Tabla_Prom_NO2_Cent2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_NO2_Cent = mean(no2_centenario, na.rm = TRUE))
Tabla_Prom_NO2_Cor2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_NO2_Cor = mean(no2_cordoba, na.rm = TRUE))
Tabla_Prom_NO2_Boc2018xMes <- group_by(q_aire2018, mes)%>%summarise(Prom_NO2_Boc = mean(no2_la_boca, na.rm = TRUE))

Y ahora tenemos ya las 9 tablas de 2018 para los tres contaminantes (CO, PM10 y N2) y las tres estaciones de medición (Centenario, Córdoba y La Boca).

PASO 5: Calcular los valores para 2019

Acá vamos a calcular los demás valores para el año 2019. Lo primero que debemos hacer convertir la columna mes en un factor ordenado de modo que siempre respete el orden de los meses y luego crear la tabla igual que lo hicimos con las anteriores:

q_aire2019 <- read.csv("./calidad-del-aire/calidad-del-aire-2019.csv")
q_aire2019 <- mutate(q_aire2019, mes=factor(mes, 
                              levels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"),
                              ordered=TRUE))

Ahora calculamos primero el valor para CO para la estación Centenario:

Tabla_Prom_CO_Cent2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_CO_Cent = mean(co_centenario, na.rm = TRUE))
Tabla_Prom_CO_Cent2019xMes
## # A tibble: 4 x 2
##   mes   Prom_CO_Cent
##   <ord>        <dbl>
## 1 Ene          0.410
## 2 Feb          0.414
## 3 Mar          0.445
## 4 Abr          0.568

Observemos que solo tenemos cuatro meses debido a que al momento de realizar este trabajo estamos en junio y todavía no conocemos los valores de mayo, pero luego podríamos completarlos.

Ahora vamos a calcular CO para las otras dos estaciones:

Tabla_Prom_CO_Cor2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_CO_Cor = mean(co_cordoba, na.rm = TRUE))
Tabla_Prom_CO_Boc2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_CO_Boc = mean(co_la_boca, na.rm = TRUE))

Ahora vamos a calcular el resto, los valores para PM10 y NO2 para las tres estaciones, siempre del año 2019:

# PM10 para las tres estaciones
Tabla_Prom_PM10_Cent2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_PM10_Cent = mean(pm10_centenario, na.rm = TRUE))
Tabla_Prom_PM10_Cor2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_PM10_Cor = mean(pm10_cordoba, na.rm = TRUE))
Tabla_Prom_PM10_Boc2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_PM10_Boc = mean(pm10_la_boca, na.rm = TRUE))
# NO2 para las tres estaciones
Tabla_Prom_NO2_Cent2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_NO2_Cent = mean(no2_centenario, na.rm = TRUE))
Tabla_Prom_NO2_Cor2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_NO2_Cor = mean(no2_cordoba, na.rm = TRUE))
Tabla_Prom_NO2_Boc2019xMes <- group_by(q_aire2019, mes)%>%summarise(Prom_NO2_Boc = mean(no2_la_boca, na.rm = TRUE))

Y ahora tenemos ya las 9 tablas de 2019 para los tres contaminantes y las tres estaciones de medición. Con esto ya hemos completado las 27 tablas con los valores promedio mensuales para cada contaminante en las tres estaciones de medición.

Lo que sigue ahora es realizar un mapa que nos muestre de manera gráfica los contaminantes medidos en las distintas estaciones. Clic en el botón de abajo para continuar con el siguiente paso o volver al paso anterior.

Principal Mapeo de datos