Download PurpleAir data

Passo a passo para baixar dados do PurpleAir usando o R

By Jéssica C. dos Santos-Silva

November 20, 2023

Download PurpleAir data

Função getPurpleairApiHistory

Dados são baixados usando a função getPurpleairApiHistory elaborada pelo Professor Willian Flores da Universidade Federal do Acre 1.

source("getPurpleairApiHistory.R")

Download dos dados

sensorIndex deve ser definido de acordo com a estação da qual se deseja obter os dados. Neste estudo, estão incluidas as estações:

  • Almirante Tamandaré
    • 175095 (outdoor)
    • 175115 (outdoor)
  • Campo Largo
    • 175103 (outdoor)
    • 175403 (outdoor)
    • 175235 (outdoor)
    • 99667 (outdoor)
  • Colombo
    • 175407 (outdoor)
  • Itaperuçú
    • 175121 (outdoor)
    • 175393 (outdoor)
    • 175451 (outdoor)
  • Rio Branco do Sul |
    • 175123 (indoor)
    • 175395 (outdoor)
    • 175101 (outdoor)
    • 175109 (indoor)
    • 175099 (indoor)
    • 175387 (outdoor)
    • 91267 (outdoor)

Biblioteca

library(tidyverse)

Baixando os dados de interesse (sensor/local, variaveis/parâmetros)

  • Sobre a temperatura: “Temperature inside of the sensor housing (F). On average, this is 8F higher than ambient conditions.”*

Código para download

#esse id pode ser obtido no mapa da PurpleAir, selecione apenas os de interesse
sensor_id <-  c('175095', '175099', '175101', '175103',
                '175109', '175115', '175121', '175123', 
                '175235', '175393', '175395', '175387',
                '175403', '175407', '175451')

#Mais informações em https://api.purpleair.com/
variaveis <- c("humidity, temperature, pm1.0_atm, pm1.0_atm_a, pm1.0_atm_b, pm2.5_atm, pm2.5_atm_a, pm2.5_atm_b, pm2.5_cf_1, pm2.5_cf_1_a, pm2.5_cf_1_b") # para corrigir PM2.5
#purpleair <- getPurpleairApiHistory(
 # sensorIndex    = sensor_id,
  # apiReadKey     = "xxxxxx", #Obtida em https://develop.purpleair.com/keys
  # startTimeStamp = "2023-05-29 00:00:00", #defina a data_hora inicial
  # endTimeStamp   = "2023-11-20 23:59:59", #defina a data_hora final
  # average        = "0", #em tempo real
  # fields         = variaveis)
# configurando o dataframe

purpleair <- purpleair %>%
  rename(date = time_stamp) %>% # renomear coluna de tempo
  mutate(date = ymd_hms(date)) %>% # identificar coluna como data/hora
  filter(!is.na(date))

Ajuste de dados

Correção de unidades para o Sistema Internacional (de F para ºC) e dos valores de MP, de acordo com estudo Barkjohn et al. (2021) e também aplicado na tese de Da Costa (2022) em dados de Curitiba/PR.

 PM~2.5~ = 0.524∗PA~cf_1~ − 0.0862∗RH + 5.75
purpleair <- purpleair %>%
  mutate(PM2.5 = 0.524*pm2.5_cf_1 - 0.0862*humidity + 5.75,
         temperature = (temperature - 32) * 5/9)

purpleair %>% 
  head()
##                    date humidity temperature pm1.0_atm pm1.0_atm_a pm1.0_atm_b
## 238 2023-05-29 23:33:53       35    29.44444     1.485        1.25        1.72
## 2   2023-05-29 23:35:53       35    30.00000     1.685        1.73        1.64
## 109 2023-05-29 23:37:53       35    30.00000     1.745        1.69        1.80
## 108 2023-05-29 23:39:53       35    30.00000     1.315        1.20        1.43
## 110 2023-05-29 23:41:53       35    30.00000     1.420        1.51        1.33
## 1   2023-05-29 23:43:53       35    30.00000     1.035        0.86        1.21
##     pm2.5_atm pm2.5_atm_a pm2.5_atm_b pm2.5_cf_1 pm2.5_cf_1_a pm2.5_cf_1_b
## 238     2.155        1.80        2.51      2.155         1.80         2.51
## 2       2.060        2.17        1.95      2.060         2.17         1.95
## 109     2.180        2.24        2.12      2.180         2.24         2.12
## 108     1.780        1.76        1.80      1.780         1.76         1.80
## 110     1.890        2.10        1.68      1.890         2.10         1.68
## 1       1.550        1.44        1.66      1.550         1.44         1.66
##     sensor_id   PM2.5
## 238    175095 3.86222
## 2      175095 3.81244
## 109    175095 3.87532
## 108    175095 3.66572
## 110    175095 3.72336
## 1      175095 3.54520

Considerações sobre dataframes de interesse

Se desejar salvar os dados no seu diretório (aqui, ‘output’):

write_csv(purpleair, “./content/blog/dados/csv/purpleair.csv”)

Se desejar importar os dados do seu diretório (aqui, ‘output’):

purpleair <- read.csv("./csv/purpleair.csv") %>%
mutate(date = ymd_hms(date)) %>% # identificar coluna como data/hora
filter(!is.na(date)) # datas lidas incorretamente

Posted on:
November 20, 2023
Length:
3 minute read, 503 words
See Also: