- 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 eithermeta
ordata
. - Added
monitor_slice_head()
andmonitor_slice_tail()
to subset a mts_monitor object after it has been been ordered bymonitor_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()
andmonitor_loadAnnual()
with improved logic to handle multiple deployments at a single location. These functions intentionally only return a singledeviceDeploymentID
perlocationID
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 inmts_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 loadepa_aqs
data. - Added
epaPreference
argument tomonitor_load()
. - Updated
monitor_combine()
with anoverlapStrategy
argument. WithoverlapStrategy = "replace all"
, values from later timeseries (includingNA
) always replace values from earlier timeseries. WithoverlapStrategy = "replace na"
, values from later timeseries only replaceNA
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.
- Improved logic for
QC_removeSuspectData
argument toairsis_load~()
and `wrcc_load~() functions. - Added
QC_invalidateConsecutiveSuspectValues()
function.
- Added
QC_removeSuspectData = TRUE
argument toairsis_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.
- Added
monitor_selectWhere()
for data based selection.
- Updated
monitor_toPWFSLSmoke()
andmonitor_fromPWFSLSmoke()
to support thefullAQSID field
- Updated
monitor_filterDate()
andmonitor_filterDatetime()
to allow one-sided filtering when passing in only a singlestartdate
orendddate
argument.
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 tobase::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 putparameterName
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 withNA
when loading data. - Added
AirFire_S3_archiveBaseUrl
as package data.
- Further documentation updates.
- Updated
monitor_dailyBarplot()
to use thepalette
argument. - Updated documentation including two vignettes:
Introduction to AirMonitor
Developer Style Guide
- Improved error message in
monitor_combine()
.
- Changed default
archiveBaseUrl
to point to https://airfire-data-exports.s3.us-west-2.amazonaws.com/monitoring/v2.
- Added
trimEmptyDays
argument tomonitor_trimDate()
. - Added
monitor_aqi()
and support for plots including:- newly defined
US_EPA$breaks_AQI
- added
pollutant = "AQI"
option to alladdAQI~()
functions
- newly defined
- 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.
- Enhanced
monitor_combine()
with thereplaceMeta
argument.
- Added
airsis_loadAnnual()
,wrcc_loadAnnual()
,airnow_loadMonthly()
. - Renamed
monitor_distance()
tomonitor_getDistance()
to imply that the returned object is not a mts_monitor object. - Added
monitor_filterByDistance()
.
- Fixed bugs in
monitor_getCurrentStatus()
:- error message when all yesterday data is missing in a single time zone
- timestamps were not reported in local timezone
- Improved parameter validation in
monitor_filterDate()
andmonitor_filterDatetime()
.
- Added check for no-valid-values in
monitor_isEmpty()
.
- Renamed
monitor_extractData()
tomonitor_getData()
. - Renamed
monitor_extractMeta()
tomonitor_getMeta()
. - Added
monitor_getCurrentStatus()
.
- Added
monitor_nowcast()
.
- Added
monitor_dygraph()
.
- 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.
- Added
monitor_dailyStatistic()
. - Added
monitor_dailyThreshold()
. - Added
monitor_dailyBarplot()
. - Added
aqiColors()
. - Improvements to
monitor_timeseriesPlot()
andmonitor_dailyBarplot()
.
- Added
airsis_loadLatest()
,wrcc_loadLatest()
. - Added
~_loadDaily()
.
- 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.
- Added
AQSID
tocoreMetadataNames
. - Added
monitor_toCSV()
,monitor_toPWFSLSmoke()
. - Added
monitor_collapse()
,monitor_distance()
andmonitor_select()
. - Renamed
monitor_filter()
tomonitor_filterData()
to be more explicit. - Changed
monitor_timeseriesPlot()
default toaddAQI = FALSE
.
monitor_leaflet()
now always shows higher values on top.- Fixed bugs in
monitor_timeseriesPlot()
. - Added
airnow_loadlatest()
. - Updated to expect
meta$countyName
rather thanmeta$county
. This reflects changes in MazamaLocationutils and thus the mts_monitor objects created by AirMonitorIngest.
- Improvements to
monitor_leaflet()
. - Improvements to
monitor_timeseriesPlot()
. - Added
monitor_timeInfo()
function. - Added
CONUS
andUS_52
collections of state codes. - Added utility function:
monitor_bestTimezone()
. - Added support for EPA
CO
,OZONE
andPM10
data. - Added
monitor_select()
for easier selection of monitors. - Added
monitor_replaceValues()
. - Added
QC_negativeValues
argument toepa_aqs_loadAnnual()
- Initial setup.