• Updated monitor_nowcast() to work in “forecast” mode – retain NowCast values in the final hour even when no PM2.5 value is available. This should match the way NowCast is calculated at AirNow. See:

https://document.airnow.gov/technical-assistance-document-for-the-reporting-of-daily-air-quailty.pdf

Defaulting to the new PM_NAAQS update in all functions that accept the NAAQS parameter.

Version 0.4 includes several new convenience functions as well as minor changes throughout the code base to support the upcoming change to the PM_NAAQS See: (PM_NAAQS update)[https://www.epa.gov/system/files/documents/2024-02/pm-naaqs-air-quality-index-fact-sheet.pdf]

Users will see an optional NAAQS parameter in plotting functions. This parameter defaults to “PM2.5” but also accepts “PM2.5_2024” to have things colored according to the updated NAAQS thresholds.

The monitor_aqi(), monitor_dailyThreshold() and monitor_toAQCTAble() functions also accept this argument and will use updated NAAQS thresholds when specified.

Version 0.4 has updated package dependencies:

MazamaCoreUtils (>= 0.5.2),
MazamaRollUtils (>= 0.1.3),
MazamaTimeSeries (>= 0.2.16),
  • Added monitor_pull() to retrieve a column of data from either meta or data.
  • Added monitor_slice_head() and monitor_slice_tail() to subset a mts_monitor object after it has been been ordered by monitor_arrange().
  • Added monitor_setTimeAxis() which is useful when you want to place separate monitor objects on the same time axis for plotting.
  • Added aqiCategories() to return a matrix of integers or names associated with incoming PM2.5 values.
  • Added mnoitor_toAQCTable() for easy generation of a table the number of hours or days each site spent in a particular AQ category.
  • Updated monitor_loadLatest(), monitor_loadDaily() and monitor_loadAnnual() with improved logic to handle multiple deployments at a single location. These functions intentionally only return a single deviceDeploymentID per locationID and preferentially retain AirNow data over data from AIRSIS or WRCC. The new logic applies to cases where multiple deployments exist within AirNow (or AIRSIS or WRCC) and retains the deployment that has the most recent data.
  • Addressed CRAN package documentation issue.
  • Added monitor_arrange() to reorder time series in a mts_monitor object based on a variable in mts_monitor$meta.
  • Guarantee the existence of a fullAQSID field in all loaded data.
  • Tweaks to pass CRAN checks.
  • Fixed a bug in monitor_loadAnnual() when loading years before the first year of AirNow data.
  • Updated NW_Megafires dataset to combine data from EPA AQS, AirNow and WRCC.
  • Various improvements to examples used in documentation
  • Edited the old “NowCast” article for inclusion.
  • Added epa_aqs_loadAnnual().
  • Updated monitor_loadAnnual() to load epa_aqs data.
  • Added epaPreference argument to monitor_load().
  • Updated monitor_combine() with an overlapStrategy argument. With overlapStrategy = "replace all", values from later timeseries (including NA) always replace values from earlier timeseries. With overlapStrategy = "replace na", values from later timeseries only replace NA values in earlier timeseries.
  • Updated vignettes.
  • Updated NW_Megafires dataset from corrected database.
  • Added “Save Data as CSV” article.
  • Now depending on MazamaTimeSeries 0.2.8 for the mts_selectWhere() function.
  • Updated data sets with latest version of the data.
  • Added QC_removeSuspectData = TRUE argument to airsis_load~() and `wrcc_load~() functions to remove those monitors that have values of 2000 ug/m3. A review of the data from AIRSIS and WRCC shows some archival time series (2015, 2016, 2020) where all values are one of 0, 1K, 2K, 3K, 4K, 5K.

Version 0.3 works with data built using a new fullAQSID field available from AirNow. This unique identifier is more consistent and should be better supported in the future than the older AQSID field.

This change requires a few minor changes mostly in function examples.

CRAN fixes:

  • Guarantee that every plotting function documents the return value.
  • Updated references for AQI and NowCast algorithms.

CRAN fixes:

  • Removed simplfy = TRUE from calls to base::apply() as this is the default.
  • Replaced URL reference for AQI breaks to point to AirNow.

Ready for CRAN submission.

  • Fixes for package check NOTEs.
  • Added “Data Model” vignette.
  • Added “Save Data as CSV” vignette.
  • Changed airnow_load~() functions o put parameterName argument last.
  • Added test-loadData.R
  • Further documentation updates.
  • Rebuilt example datasets from latest data archives.
  • Removed epa_aqs_loadAnnual() until those data files get rebuilt.
  • Improved documentation examples.
  • Added monitor_timeRange().
  • Replace any NaN data values with NA when loading data.
  • Added AirFire_S3_archiveBaseUrl as package data.
  • Further documentation updates.
  • Updated monitor_dailyBarplot() to use the palette argument.
  • Updated documentation including two vignettes:
    • Introduction to AirMonitor
    • Developer Style Guide
  • Added trimEmptyDays argument to monitor_trimDate().
  • Added monitor_aqi() and support for plots including:
    • newly defined US_EPA$breaks_AQI
    • added pollutant = "AQI" option to all addAQI~() functions
  • Fixed bug in monitor_leaflet() so that it can handle single-timeseries monitor objects.
  • Added monitor_load() and monitor_loadLatest/Daily/Monthly/Annual() to intelligently combine data from AirNow, AIRSIS and WRCC.
  • Added airsis_loadAnnual().
  • monitor_leaflet() now displays deviceDeploymentID in bold.
  • Added monitor_mutate().
  • Removed monitor_filterData() as too confusing because it returns an irregular time axis. Anyone wanting to do this kind of work should be familiar enough with dplyr to do it themselves.
  • Now depending on MazamaTimeSeries 0.1.1.
  • Guarantee that each “well known directory” path includes “/data” as the last level before the actual data files.
  • monitor_leaflet() now always shows higher values on top.
  • Fixed bugs in monitor_timeseriesPlot().
  • Added airnow_loadlatest().
  • Updated to expect meta$countyName rather than meta$county. This reflects changes in MazamaLocationutils and thus the mts_monitor objects created by AirMonitorIngest.
  • Initial setup.