# PM2.5 spectrometer tests
library('ggplot2')
library('openair')
## Loading required package: maps
## 
##  # maps v3.1: updated 'world': all lakes moved to separate new #
##  # 'lakes' database. Type '?world' or 'news(package="maps")'.  #
library('lubridate')
## 
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
## 
##     date
library('corrplot')

# ODIN-SD-01 data ####
odin.sd.01.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_01.txt")
odin.sd.01.data$date <- as.POSIXct(paste(odin.sd.01.data$Day,odin.sd.01.data$Time),tz='Pacific/Auckland')
odin.sd.01.data$Day<-NULL
odin.sd.01.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:42:55

tdiff = (as.POSIXct("2016-06-02 16:42:55",format = "%Y-%m-%d %H:%M:%S") - odin.sd.01.data$date[1])
odin.sd.01.data$date <- odin.sd.01.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.01.data) <- c('FrameLength.01',
                           'PM1.01',
                           'PM2.5.01',
                           'PM10.01',
                           'Data4.01',
                           'Data5.01',
                           'Data6.01',
                           'Data7.01',
                           'Data8.01',
                           'Data9.01',
                           'Temperature.01',
                           'RH.01',
                           'date')

# ODIN-SD-02 data ####
odin.sd.02.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_02.txt")
odin.sd.02.data$date <- as.POSIXct(paste(odin.sd.02.data$Day,odin.sd.02.data$Time),tz='Pacific/Auckland')
odin.sd.02.data$Day<-NULL
odin.sd.02.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:39:10

tdiff = (as.POSIXct("2016-06-02 16:39:10",format = "%Y-%m-%d %H:%M:%S") - odin.sd.02.data$date[1])
odin.sd.02.data$date <- odin.sd.02.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.02.data) <- c('FrameLength.02',
                           'PM1.02',
                           'PM2.5.02',
                           'PM10.02',
                           'Data4.02',
                           'Data5.02',
                           'Data6.02',
                           'Data7.02',
                           'Data8.02',
                           'Data9.02',
                           'Temperature.02',
                           'RH.02',
                           'date')

# ODIN-SD-03 data ####
odin.sd.03.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_03.txt")
odin.sd.03.data$date <- as.POSIXct(paste(odin.sd.03.data$Day,odin.sd.03.data$Time),tz='Pacific/Auckland')
odin.sd.03.data$Day<-NULL
odin.sd.03.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:42:10

tdiff = (as.POSIXct("2016-06-02 16:42:10",format = "%Y-%m-%d %H:%M:%S") - odin.sd.03.data$date[1])
odin.sd.03.data$date <- odin.sd.03.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.03.data) <- c('FrameLength.03',
                           'PM1.03',
                           'PM2.5.03',
                           'PM10.03',
                           'Data4.03',
                           'Data5.03',
                           'Data6.03',
                           'Data7.03',
                           'Data8.03',
                           'Data9.03',
                           'Temperature.03',
                           'RH.03',
                           'date')

# ODIN-SD-05 data ####
odin.sd.05.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_05.txt")
odin.sd.05.data$date <- as.POSIXct(paste(odin.sd.05.data$Day,odin.sd.05.data$Time),tz='Pacific/Auckland')
odin.sd.05.data$Day<-NULL
odin.sd.05.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:43:55

tdiff = (as.POSIXct("2016-06-02 16:43:55",format = "%Y-%m-%d %H:%M:%S") - odin.sd.05.data$date[1])
odin.sd.05.data$date <- odin.sd.05.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.05.data) <- c('FrameLength.05',
                           'PM1.05',
                           'PM2.5.05',
                           'PM10.05',
                           'Data4.05',
                           'Data5.05',
                           'Data6.05',
                           'Data7.05',
                           'Data8.05',
                           'Data9.05',
                           'Temperature.05',
                           'RH.05',
                           'date')

# ODIN-SD-06 data ####
odin.sd.06.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_06.txt")
odin.sd.06.data$date <- as.POSIXct(paste(odin.sd.06.data$Day,odin.sd.06.data$Time),tz='Pacific/Auckland')
odin.sd.06.data$Day<-NULL
odin.sd.06.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:40:10

tdiff = (as.POSIXct("2016-06-02 16:40:10",format = "%Y-%m-%d %H:%M:%S") - odin.sd.06.data$date[1])
odin.sd.06.data$date <- odin.sd.06.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.06.data) <- c('FrameLength.06',
                           'PM1.06',
                           'PM2.5.06',
                           'PM10.06',
                           'Data4.06',
                           'Data5.06',
                           'Data6.06',
                           'Data7.06',
                           'Data8.06',
                           'Data9.06',
                           'Temperature.06',
                           'RH.06',
                           'date')

# ODIN-SD-07 data ####
odin.sd.07.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_07.txt")
odin.sd.07.data$date <- as.POSIXct(paste(odin.sd.07.data$Day,odin.sd.07.data$Time),tz='Pacific/Auckland')
odin.sd.07.data$Day<-NULL
odin.sd.07.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:41:30

tdiff = (as.POSIXct("2016-06-02 16:41:30",format = "%Y-%m-%d %H:%M:%S") - odin.sd.07.data$date[1])
odin.sd.07.data$date <- odin.sd.07.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.07.data) <- c('FrameLength.07',
                           'PM1.07',
                           'PM2.5.07',
                           'PM10.07',
                           'Data4.07',
                           'Data5.07',
                           'Data6.07',
                           'Data7.07',
                           'Data8.07',
                           'Data9.07',
                           'Temperature.07',
                           'RH.07',
                           'date')

# ODIN-SD-08 data ####
odin.sd.08.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_08.txt")
odin.sd.08.data$date <- as.POSIXct(paste(odin.sd.08.data$Day,odin.sd.08.data$Time),tz='Pacific/Auckland')
odin.sd.08.data$Day<-NULL
odin.sd.08.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:46:55

tdiff = (as.POSIXct("2016-06-02 16:46:55",format = "%Y-%m-%d %H:%M:%S") - odin.sd.08.data$date[1])
odin.sd.08.data$date <- odin.sd.08.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.08.data) <- c('FrameLength.08',
                           'PM1.08',
                           'PM2.5.08',
                           'PM10.08',
                           'Data4.08',
                           'Data5.08',
                           'Data6.08',
                           'Data7.08',
                           'Data8.08',
                           'Data9.08',
                           'Temperature.08',
                           'RH.08',
                           'date')

# ODIN-SD-09 data ####
odin.sd.09.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_09.txt")
odin.sd.09.data$date <- as.POSIXct(paste(odin.sd.09.data$Day,odin.sd.09.data$Time),tz='Pacific/Auckland')
odin.sd.09.data$Day<-NULL
odin.sd.09.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:48:00

tdiff = (as.POSIXct("2016-06-02 16:48:00",format = "%Y-%m-%d %H:%M:%S") - odin.sd.09.data$date[1])
odin.sd.09.data$date <- odin.sd.09.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.09.data) <- c('FrameLength.09',
                           'PM1.09',
                           'PM2.5.09',
                           'PM10.09',
                           'Data4.09',
                           'Data5.09',
                           'Data6.09',
                           'Data7.09',
                           'Data8.09',
                           'Data9.09',
                           'Temperature.09',
                           'RH.09',
                           'date')

# ODIN-SD-10 data ####
odin.sd.10.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_10.txt")
odin.sd.10.data$date <- as.POSIXct(paste(odin.sd.10.data$Day,odin.sd.10.data$Time),tz='Pacific/Auckland')
odin.sd.10.data$Day<-NULL
odin.sd.10.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:48:50

tdiff = (as.POSIXct("2016-06-02 16:48:50",format = "%Y-%m-%d %H:%M:%S") - odin.sd.10.data$date[1])
odin.sd.10.data$date <- odin.sd.10.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.10.data) <- c('FrameLength.10',
                           'PM1.10',
                           'PM2.5.10',
                           'PM10.10',
                           'Data4.10',
                           'Data5.10',
                           'Data6.10',
                           'Data7.10',
                           'Data8.10',
                           'Data9.10',
                           'Temperature.10',
                           'RH.10',
                           'date')

# ODIN-SD-11 data ####
odin.sd.11.data <- read.delim("/home/gustavo/data/ODIN_SD/20160603/odin_sd_11.txt")
odin.sd.11.data$date <- as.POSIXct(paste(odin.sd.11.data$Day,odin.sd.11.data$Time),tz='Pacific/Auckland')
odin.sd.11.data$Day<-NULL
odin.sd.11.data$Time<-NULL

# Date correction
# Real time: 2016-06-02 16:49:55

tdiff = (as.POSIXct("2016-06-02 16:49:55",format = "%Y-%m-%d %H:%M:%S") - odin.sd.11.data$date[1])
odin.sd.11.data$date <- odin.sd.11.data$date + tdiff

# Rename data fields to prepare for merging

names(odin.sd.11.data) <- c('FrameLength.11',
                           'PM1.11',
                           'PM2.5.11',
                           'PM10.11',
                           'Data4.11',
                           'Data5.11',
                           'Data6.11',
                           'Data7.11',
                           'Data8.11',
                           'Data9.11',
                           'Temperature.11',
                           'RH.11',
                           'date')

# Merging the data ####
merged.data <- merge(odin.sd.01.data,odin.sd.02.data,by = 'date',all = TRUE)
merged.data <- merge(merged.data,odin.sd.03.data,by = 'date',all = TRUE)
merged.data <- merge(merged.data,odin.sd.05.data,by = 'date',all = TRUE)
merged.data <- merge(merged.data,odin.sd.06.data,by = 'date',all = TRUE)
merged.data <- merge(merged.data,odin.sd.07.data,by = 'date',all = TRUE)
merged.data <- merge(merged.data,odin.sd.08.data,by = 'date',all = TRUE)
merged.data <- merge(merged.data,odin.sd.09.data,by = 'date',all = TRUE)
merged.data <- merge(merged.data,odin.sd.10.data,by = 'date',all = TRUE)
merged.data <- merge(merged.data,odin.sd.11.data,by = 'date',all = TRUE)

# Plotting ####
avgtime = '30 min'
timePlot(merged.data,pollutant = c('Temperature.01',
                                   'Temperature.02',
                                   'Temperature.03',
                                   'Temperature.05',
                                   'Temperature.06',
                                   'Temperature.07',
                                   'Temperature.08',
                                   'Temperature.09',
                                   'Temperature.10',
                                   'Temperature.11'),
         avg.time = avgtime,
         group = TRUE)

timePlot(merged.data,pollutant = c('RH.01',
                                   'RH.02',
                                   'RH.03',
                                   'RH.05',
                                   'RH.06',
                                   'RH.07',
                                   'RH.08',
                                   'RH.09',
                                   'RH.10',
                                   'RH.11'),
         avg.time = avgtime,
         group = TRUE)

timePlot(merged.data,pollutant = c('PM1.01',
                                   'PM1.02',
                                   'PM1.03',
                                   'PM1.05',
                                   'PM1.06',
                                   'PM1.07',
                                   'PM1.08',
                                   'PM1.09',
                                   'PM1.10',
                                   'PM1.11'),
         avg.time = avgtime,
         group = TRUE)

timePlot(merged.data,pollutant = c('PM2.5.01',
                                   'PM2.5.02',
                                   'PM2.5.03',
                                   'PM2.5.05',
                                   'PM2.5.06',
                                   'PM2.5.07',
                                   'PM2.5.08',
                                   'PM2.5.09',
                                   'PM2.5.10',
                                   'PM2.5.11'),
         avg.time = avgtime,
         group = TRUE)

timePlot(merged.data,pollutant = c('PM10.01',
                                   'PM10.02',
                                   'PM10.03',
                                   'PM10.05',
                                   'PM10.06',
                                   'PM10.07',
                                   'PM10.08',
                                   'PM10.09',
                                   'PM10.10',
                                   'PM10.11'),
         avg.time = avgtime,
         group = TRUE)

save(merged.data,file = './odin-sd-data.RData')