# Libraries needed
library(librarian)
shelf(openair,
      readr)
Warning in shelf(openair, readr): cran_repo = '@CRAN@' is not a valid URL. 
                    Defaulting to cran_repo = 'https://cran.r-project.org'.
# Load data
MA350_0051 <- read_csv("~/data/Wellington_AETH/MicroAeth/PwrTest/MA350-0051_S0018_190510095100.csv")
Parsed with column specification:
cols(
  .default = col_integer(),
  Serialnumber = col_character(),
  Firmwareversion = col_double(),
  Appversion = col_double(),
  Datetimelocal = col_datetime(format = ""),
  Datelocal = col_date(format = ""),
  Timelocal = col_time(format = ""),
  Flowtotal = col_double(),
  Flow1 = col_double(),
  Flow2 = col_double(),
  Sampletemp = col_double(),
  SampleRH = col_double(),
  Sampledewpoint = col_double(),
  Internaltemp = col_double(),
  Opticalconfig = col_character(),
  UVATN1 = col_double(),
  UVATN2 = col_double(),
  UVK = col_double(),
  BlueATN1 = col_double(),
  BlueATN2 = col_double(),
  BlueK = col_double()
  # ... with 10 more columns
)
See spec(...) for full column specifications.
MA350_0052 <- read_csv("~/data/Wellington_AETH/MicroAeth/PwrTest/MA350-0052_S0023_190503110301.csv")
Parsed with column specification:
cols(
  .default = col_integer(),
  `Serial number` = col_character(),
  `Firmware version` = col_double(),
  `App version` = col_double(),
  `Date / time local` = col_datetime(format = ""),
  `Date local (yyyy/MM/dd)` = col_date(format = ""),
  `Time local (hh:mm:ss)` = col_time(format = ""),
  `Flow total (mL/min)` = col_double(),
  `Flow1 (mL/min)` = col_double(),
  `Flow2 (mL/min)` = col_double(),
  `Sample temp (C)` = col_double(),
  `Sample RH (%)` = col_double(),
  `Sample dewpoint (C)` = col_double(),
  `Internal temp (C)` = col_double(),
  `Optical config` = col_character(),
  `UV ATN1` = col_double(),
  `UV ATN2` = col_double(),
  `UV K` = col_double(),
  `Blue ATN1` = col_double(),
  `Blue ATN2` = col_double(),
  `Blue K` = col_double()
  # ... with 10 more columns
)
See spec(...) for full column specifications.
# Fix names to something R-friendly
names(MA350_0052) <- names(MA350_0051)
# Add 'date' field to keep OpenAir happy (changed 0051 manually off-R)
MA350_0051$date <- MA350_0051$Datetimelocal
MA350_0052$date <- MA350_0052$Datetimelocal
# Merge all data (names end up .x and .y)
all_data <- merge(MA350_0051,MA350_0052, by = 'date', all = TRUE)
# Add inverted (-1) BC channels for 0052
all_data$UVBCc.y.neg <- -all_data$UVBCc.y
all_data$BlueBCc.y.neg <- -all_data$BlueBCc.y
all_data$GreenBCc.y.neg <- -all_data$GreenBCc.y
all_data$RedBCc.y.neg <- -all_data$RedBCc.y
all_data$IRBCc.y.neg <- -all_data$IRBCc.y

Plots to explore the data

avg_time <- '10 min'

IR

timePlot(all_data,pollutant = c('IRBC1.x',
                                'IRBC1.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('IRBC2.x',
                                'IRBC2.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('IRBCc.x',
                                'IRBCc.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('IRBCc.x',
                                'IRBCc.y.neg'),
         avg.time = avg_time,
         group = TRUE)

UV

timePlot(all_data,pollutant = c('UVBC1.x',
                                'UVBC1.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('UVBC2.x',
                                'UVBC2.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('UVBCc.x',
                                'UVBCc.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('UVBCc.x',
                                'UVBCc.y.neg'),
         avg.time = avg_time,
         group = TRUE)

Temperatures

timePlot(all_data,pollutant = c('Internaltemp.x',
                                'Internaltemp.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('Sampletemp.x',
                                'Sampletemp.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('SampleRH.x',
                                'SampleRH.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('Sampledewpoint.x',
                                'Sampledewpoint.y'),
         avg.time = avg_time,
         group = TRUE)

Flow

timePlot(all_data,pollutant = c('Flow1.x',
                                'Flow1.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('Flow2.x',
                                'Flow2.y'),
         avg.time = avg_time,
         group = TRUE)

timePlot(all_data,pollutant = c('Flowtotal.x',
                                'Flowtotal.y'),
         avg.time = avg_time,
         group = TRUE)

IycgLS0tCiMnIGF1dGhvcjogIkd1c3Rhdm8gT2xpdmFyZXMiCiMnIHRpdGxlOiAiTUEzNTAgd2VpcmRuZXNzIgojJyBvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKIycgLS0tCgojIExpYnJhcmllcyBuZWVkZWQKbGlicmFyeShsaWJyYXJpYW4pCnNoZWxmKG9wZW5haXIsCiAgICAgIHJlYWRyKQojIExvYWQgZGF0YQpNQTM1MF8wMDUxIDwtIHJlYWRfY3N2KCJ+L2RhdGEvV2VsbGluZ3Rvbl9BRVRIL01pY3JvQWV0aC9Qd3JUZXN0L01BMzUwLTAwNTFfUzAwMThfMTkwNTEwMDk1MTAwLmNzdiIpCk1BMzUwXzAwNTIgPC0gcmVhZF9jc3YoIn4vZGF0YS9XZWxsaW5ndG9uX0FFVEgvTWljcm9BZXRoL1B3clRlc3QvTUEzNTAtMDA1Ml9TMDAyM18xOTA1MDMxMTAzMDEuY3N2IikKIyBGaXggbmFtZXMgdG8gc29tZXRoaW5nIFItZnJpZW5kbHkKbmFtZXMoTUEzNTBfMDA1MikgPC0gbmFtZXMoTUEzNTBfMDA1MSkKIyBBZGQgJ2RhdGUnIGZpZWxkIHRvIGtlZXAgT3BlbkFpciBoYXBweSAoY2hhbmdlZCAwMDUxIG1hbnVhbGx5IG9mZi1SKQpNQTM1MF8wMDUxJGRhdGUgPC0gTUEzNTBfMDA1MSREYXRldGltZWxvY2FsCk1BMzUwXzAwNTIkZGF0ZSA8LSBNQTM1MF8wMDUyJERhdGV0aW1lbG9jYWwKIyBNZXJnZSBhbGwgZGF0YSAobmFtZXMgZW5kIHVwIC54IGFuZCAueSkKYWxsX2RhdGEgPC0gbWVyZ2UoTUEzNTBfMDA1MSxNQTM1MF8wMDUyLCBieSA9ICdkYXRlJywgYWxsID0gVFJVRSkKIyBBZGQgaW52ZXJ0ZWQgKC0xKSBCQyBjaGFubmVscyBmb3IgMDA1MgphbGxfZGF0YSRVVkJDYy55Lm5lZyA8LSAtYWxsX2RhdGEkVVZCQ2MueQphbGxfZGF0YSRCbHVlQkNjLnkubmVnIDwtIC1hbGxfZGF0YSRCbHVlQkNjLnkKYWxsX2RhdGEkR3JlZW5CQ2MueS5uZWcgPC0gLWFsbF9kYXRhJEdyZWVuQkNjLnkKYWxsX2RhdGEkUmVkQkNjLnkubmVnIDwtIC1hbGxfZGF0YSRSZWRCQ2MueQphbGxfZGF0YSRJUkJDYy55Lm5lZyA8LSAtYWxsX2RhdGEkSVJCQ2MueQoKIycgIyBQbG90cyB0byBleHBsb3JlIHRoZSBkYXRhCmF2Z190aW1lIDwtICcxMCBtaW4nCiMnICMjIyBJUgp0aW1lUGxvdChhbGxfZGF0YSxwb2xsdXRhbnQgPSBjKCdJUkJDMS54JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSVJCQzEueScpLAogICAgICAgICBhdmcudGltZSA9IGF2Z190aW1lLAogICAgICAgICBncm91cCA9IFRSVUUpCnRpbWVQbG90KGFsbF9kYXRhLHBvbGx1dGFudCA9IGMoJ0lSQkMyLngnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJUkJDMi55JyksCiAgICAgICAgIGF2Zy50aW1lID0gYXZnX3RpbWUsCiAgICAgICAgIGdyb3VwID0gVFJVRSkKdGltZVBsb3QoYWxsX2RhdGEscG9sbHV0YW50ID0gYygnSVJCQ2MueCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lSQkNjLnknKSwKICAgICAgICAgYXZnLnRpbWUgPSBhdmdfdGltZSwKICAgICAgICAgZ3JvdXAgPSBUUlVFKQp0aW1lUGxvdChhbGxfZGF0YSxwb2xsdXRhbnQgPSBjKCdJUkJDYy54JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSVJCQ2MueS5uZWcnKSwKICAgICAgICAgYXZnLnRpbWUgPSBhdmdfdGltZSwKICAgICAgICAgZ3JvdXAgPSBUUlVFKQoKIycgIyMjIFVWCnRpbWVQbG90KGFsbF9kYXRhLHBvbGx1dGFudCA9IGMoJ1VWQkMxLngnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVVkJDMS55JyksCiAgICAgICAgIGF2Zy50aW1lID0gYXZnX3RpbWUsCiAgICAgICAgIGdyb3VwID0gVFJVRSkKdGltZVBsb3QoYWxsX2RhdGEscG9sbHV0YW50ID0gYygnVVZCQzIueCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VWQkMyLnknKSwKICAgICAgICAgYXZnLnRpbWUgPSBhdmdfdGltZSwKICAgICAgICAgZ3JvdXAgPSBUUlVFKQp0aW1lUGxvdChhbGxfZGF0YSxwb2xsdXRhbnQgPSBjKCdVVkJDYy54JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVVZCQ2MueScpLAogICAgICAgICBhdmcudGltZSA9IGF2Z190aW1lLAogICAgICAgICBncm91cCA9IFRSVUUpCnRpbWVQbG90KGFsbF9kYXRhLHBvbGx1dGFudCA9IGMoJ1VWQkNjLngnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVVkJDYy55Lm5lZycpLAogICAgICAgICBhdmcudGltZSA9IGF2Z190aW1lLAogICAgICAgICBncm91cCA9IFRSVUUpCgojJyAjIyMgVGVtcGVyYXR1cmVzCgp0aW1lUGxvdChhbGxfZGF0YSxwb2xsdXRhbnQgPSBjKCdJbnRlcm5hbHRlbXAueCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ludGVybmFsdGVtcC55JyksCiAgICAgICAgIGF2Zy50aW1lID0gYXZnX3RpbWUsCiAgICAgICAgIGdyb3VwID0gVFJVRSkKdGltZVBsb3QoYWxsX2RhdGEscG9sbHV0YW50ID0gYygnU2FtcGxldGVtcC54JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2FtcGxldGVtcC55JyksCiAgICAgICAgIGF2Zy50aW1lID0gYXZnX3RpbWUsCiAgICAgICAgIGdyb3VwID0gVFJVRSkKdGltZVBsb3QoYWxsX2RhdGEscG9sbHV0YW50ID0gYygnU2FtcGxlUkgueCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NhbXBsZVJILnknKSwKICAgICAgICAgYXZnLnRpbWUgPSBhdmdfdGltZSwKICAgICAgICAgZ3JvdXAgPSBUUlVFKQp0aW1lUGxvdChhbGxfZGF0YSxwb2xsdXRhbnQgPSBjKCdTYW1wbGVkZXdwb2ludC54JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2FtcGxlZGV3cG9pbnQueScpLAogICAgICAgICBhdmcudGltZSA9IGF2Z190aW1lLAogICAgICAgICBncm91cCA9IFRSVUUpCgojJyAjIyMgRmxvdwp0aW1lUGxvdChhbGxfZGF0YSxwb2xsdXRhbnQgPSBjKCdGbG93MS54JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmxvdzEueScpLAogICAgICAgICBhdmcudGltZSA9IGF2Z190aW1lLAogICAgICAgICBncm91cCA9IFRSVUUpCnRpbWVQbG90KGFsbF9kYXRhLHBvbGx1dGFudCA9IGMoJ0Zsb3cyLngnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGbG93Mi55JyksCiAgICAgICAgIGF2Zy50aW1lID0gYXZnX3RpbWUsCiAgICAgICAgIGdyb3VwID0gVFJVRSkKdGltZVBsb3QoYWxsX2RhdGEscG9sbHV0YW50ID0gYygnRmxvd3RvdGFsLngnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGbG93dG90YWwueScpLAogICAgICAgICBhdmcudGltZSA9IGF2Z190aW1lLAogICAgICAgICBncm91cCA9IFRSVUUpCg==