Converts data from a pat object with an irregular time axis to an airsensor object where the numeric data has been aggregated along a standardized hourly time axis, as well as adding additional required metadata for compatibility with the *PWFSLSmoke* package.

pat_createAirSensor(
  pat = NULL,
  parameter = "pm25",
  FUN = PurpleAirQC_hourly_AB_01,
  ...
)

Arguments

pat

PurpleAir Timeseries pat object.

parameter

Parameter for which to create an univariate airsensor object. See details.

FUN

Algorithm applied to pat object for hourly aggregation and quality control. See details.

...

(optional) Additional parameters passed into FUN.

Value

An "airsensor" object of aggregated PurpleAir Timeseries data.

Details

FUN allows users to provide custom aggregation and quality-control functions that are used to create an airsensor object. The FUN must accept a pat object as the first argument and return a dataframe with a regular hourly datetime axis. FUN can access and utilize any component of a standard pat object (e.g pm25_A, temperature, etc.) as well as define new variables in the pat data. See examples.

parameter allows user to select which variable to use for the univariate airsensor object (e.g 'pm25_A', 'humidity', etc.). Furthermore the parameter can be a new variable created via FUN evaluation. See examples.

Additional named parameters can be be passed to FUN through ....

Examples

# \donttest{
# Fail gracefully if any resources are not available
try({

library(AirSensor)

# Default FUN = PurpleAirQC_hourly_AB_00
sensor <- pat_createAirSensor(example_pat)

PWFSLSmoke::monitor_timeseriesPlot(sensor, shadedNight = TRUE)

# Try out other package QC functions
example_pat %>%
  pat_createAirSensor(FUN = PurpleAirQC_hourly_AB_01) %>%
  PWFSLSmoke::monitor_timeseriesPlot(shadedNight = TRUE)
  
example_pat %>%
  pat_createAirSensor(FUN = PurpleAirQC_hourly_AB_01) %>%
  PWFSLSmoke::monitor_timeseriesPlot(shadedNight = TRUE)
  
# Custom FUN
humidity_correction <- function(pat, z = 0) {

  # Default hourly aggregation
  hourlyData <- 
    pat %>%
    pat_aggregate() %>%
    pat_extractData()
    
  # Create custom_pm variable 
  pm25 <- (hourlyData$pm25_A + hourlyData$pm25_B) / 2
  hum <- hourlyData$humidity
  temp <- hourlyData$temperature
  hourlyData$custom_pm <- pm25 - (pm25 * hum * z)
    
  return(hourlyData)
  
} 

# Evaluate custom FUN 
sensor <- pat_createAirSensor(
  example_pat, 
  parameter = "custom_pm", 
  FUN = humidity_correction,
  z = .005
)

PWFSLSmoke::monitor_timeseriesPlot(sensor, shadedNight = TRUE)

}, silent = FALSE)


# }