TADA: Assessment Unit Use Case Demo
TADA Team
2024-10-31
Source:vignettes/articles/TADAAssessmentUnitUseCase.Rmd
TADAAssessmentUnitUseCase.Rmd
Overview
We will walk through the specific use case of query, downloading, preparing, QA/QCing data from a single Assessment Unit with multiple Monitoring Locations sampled by several organizations. Three characteristics, pH, water temperature, and total nitrogen are used in this example. Two of the characteristics, pH and water temperature, will be compared to a state water quality standard from Illinois. The third characteristic, total nitrogen, does not have an Illinois water quality standard, but is used to demonstrate some helpful functions for data exploration and visualization.
This vignette is designed to be concise and provide an example of how you might use TADA functions for basic data discovery and analysis with regards to a single Assessment Unit and a small subset of characteristics. It leverages functions from TADA Modules 1 and 2. For more details on each function, see the TADA Function Reference or the more comprehensive module vignettes:
Load Required Packages
The fist step is to load the TADA package and other packages used in our workflow. (If you are a first-time TADA user, see TADA Module 1 Beginner Training for TADA package installation instructions.)
We’ll also record the start time for our analysis, beginning after loading packages.
Data Retrieval - Water Chemistry
The water chemistry data we will use are downloaded from the Water Quality Portal (https://www.waterqualitydata.us/). The WQP integrates publicly available water quality data from the USGS National Water Information System (NWIS) and the EPA Water Quality Exchange (WQX) Data Warehouse. The EPA water quality data originate from the Water Quality Exchange, the EPA’s repository of water quality monitoring data collected by water resource management groups across the country. Organizations, including states, tribes, watershed groups, other federal agencies, volunteer groups, and universities, submit data to the WQX.
We are interested in Assessment Unit “IL_I-84”. This is a Mississippi River Assessment Unit. Because we don’t have a comprehensive list of the Monitoring Locations in this Assessment Unit, we will need to create a broad query to retrieve all results that might be associated the IL_I-84. One way to do this is to include all HUC10s that are relevant to the Assessment Unit.
We can use TADA_DataRetrieval
to retrieve WQP data. In
this example, we have specified lists of HUCs and Characteristic Types
to reduce the size of the query since we have a general idea of the
location of our assessment unit of interest and know which
characteristics we’d like to explore. One quick way to find this
information is to view IL_I-84’s Waterbody Report on How’s My Waterway:
WaterbodyReport/IL_EPA/IL_I-84/2022.
We’ll also need to set start and end dates. For this example we’ll use a ten year range between 2010 and 2020. We will also set the Characteristic Type to “Nutrient” and “Physical”, because these types contain nitrogen, pH and water temperature Characteristics. It is possible to query by a specific Characteristic Name, but different organizations may input the same name in a variety of ways. Therefore, we recommend keeping your initial queries as broad as possible so all relevant results are downloaded and useful data from synonymous Characteristics are not missed. There are TADA functions that can be used to harmonize these synonyms.
# Import data from WQP
data <- TADA_DataRetrieval(
statecode = "IL",
startDate = "2010-01-01",
endDate = "2020-12-31",
huc = c("0714010505", "0714010504", "0714010508", "0714010501", "0714010503"),
applyautoclean = TRUE
)
## [1] "Downloading WQP query results. This may take some time depending upon the query size."
## $statecode
## [1] "US:17"
##
## $huc
## [1] "0714010505" "0714010504" "0714010508" "0714010501" "0714010503"
##
## $startDate
## [1] "2010-01-01"
##
## $endDate
## [1] "2020-12-31"
## [1] "Data successfully downloaded. Running TADA_AutoClean function."
## [1] "TADA_Autoclean: creating TADA-specific columns."
## [1] "TADA_Autoclean: harmonizing dissolved oxygen characterisic name to DISSOLVED OXYGEN SATURATION if unit is % or % SATURATN."
## [1] "TADA_Autoclean: handling special characters and coverting TADA.ResultMeasureValue and TADA.DetectionQuantitationLimitMeasure.MeasureValue value fields to numeric."
## [1] "TADA_Autoclean: converting TADA.LatitudeMeasure and TADA.LongitudeMeasure fields to numeric."
## [1] "TADA_Autoclean: harmonizing synonymous unit names (m and meters) to m."
## [1] "TADA_Autoclean: updating deprecated (i.e. retired) characteristic names."
## [1] "444 results in your dataset have one of the following deprecated characteristic names: 1,2-Benzenedicarboxamide, N2-[1,1-dimethyl-2-(methylsulfonyl)ethyl]-3-iodo-N1-[2-methyl-4-[1,2,2,2-tetrafluoro-1-(trifluoromethyl)ethyl]phenyl]-; Desethyl-desisopropyl Atrazine***retired***use 2-Chloro-4,6-diamino-s-triazine; Desethylatrazine***retired***use 2-Chloro-4-isopropylamino-6-amino-s-triazine; Desisopropyl atrazine; Inorganic nitrogen (nitrate and nitrite); Inorganic nitrogen (nitrate and nitrite) ***retired***use Nitrate + Nitrite. These names have been substituted with the updated preferred names in the TADA.CharacteristicName field."
## [1] "TADA_Autoclean: harmonizing result and depth units."
## [1] "TADA_Autoclean: creating TADA.ComparableDataIdentifier field for use when generating visualizations and analyses."
## [1] "NOTE: This version of the TADA package is designed to work with numeric data with media name: 'WATER'. TADA_AutoClean does not currently remove (filter) data with non-water media types. If desired, the user must make this specification on their own outside of package functions. Example: dplyr::filter(.data, TADA.ActivityMediaName == 'WATER')"
AutoClean
As part of TADA_DataRetrieval
,
TADA_AutoClean
is performed automatically unless specified
otherwise by the user (by setting applyautoclean = FALSE). When
TADA_AutoClean
is run, the following functions are
performed on the data retrieved from the WQP:
TADA_ConvertSpecialChars
- converts result value columns to numeric and flags non-numeric values that could not be converted.TADA_ConvertResultUnits
- unifies result units for easier quality control and reviewTADA_ConvertDepthUnits
- converts depth units to a consistent unit (meters).TADA_IDCensoredData
- categorizes detection limit data and identifies mismatches in result detection condition and result detection limit type.Other helpful actions - converts important text columns to all upper-case letters, and uses WQX format rules to harmonize specific NWIS metadata conventions (e.g. move characteristic speciation from the TADA.ResultMeasure.MeasureUnitCode column to the TADA.MethodSpeciationName column)
As a general rule, TADA functions do not change any contents in the WQP-served columns. Instead, they add new columns with the prefix “TADA.” This allows users to easily review any changes TADA functions have made.
Data Retrieval - Geospatial
All geospatial data used in this example are downloaded from the Assessment Total Maximum Daily Load (TMDL) Tracking and Implementation System (ATTAINS) (https://www.epa.gov/waterdata/attains). ATTAINS is an online system for accessing information about conditions in the Nation’s surface waters.
This information reported to EPA by states is available in ATTAINS. The public information is made available via ATTAINS web services. New TADA functions leverage the ATTAINS geospatial services to make geospatial information including catchment and assessment unit geometry easily accessible to R users.
We can use the function, TADA_GetATTAINS
to obtain
geospatial data from ATTAINS relevant to the Monitoring
Locations included in the WQP data set. See TADA
Module 2 for a much more detailed look at the logic behind this and
the other TADA geospatial functions.
# Import data from ATTAINS geospatial services
ATTAINS_data <- TADA_GetATTAINS(data)
## [1] "Transforming your data into a spatial object."
## [1] "Your WQP data frame contains observations without a listed coordinate reference system (CRS). For these, we have assigned CRS 4326."
## [1] "Depending on your data's observation count and its spatial range, the ATTAINS pull may take a while."
View Geospatial Features
The TADA_ViewATTAINS
function allows us to see where the
monitoring locations from the WQP data set are relative
to ATTAINS-indexed catchments and assessment units.
This can be helpful when deciding which Monitoring Locations should be
retained for additional analysis. For this demo, we are focusing on a
single Assessment Unit, IL-84, with multiple monitoring locations
(MonitoringLocationIdentifier).
# View catchments and assessment units on map
ATTAINS_map <- TADA_ViewATTAINS(ATTAINS_data)
ATTAINS_map
Monitoring Location Filter and Review
Now that we’ve associated geospatial data from ATTAINS with the WQP data, we can filter the data set to retain only results that were collected in the specified Assessment Unit. We can also generate a new table to give us some information about the individual monitoring locations within the assessment unit. After this filter step is complete, we can remove the “ATTAINS.” prefixed columns to reduce the size of the data set, as we won’t need them for the remaining steps in this example.
We can also create a table with some basic information about the Monitoring Locations in Assessment Unit IL-84 and a pie chart to display the relative number of results contributed by each organization.
# Filter data for specified assessment unit
AUID_data <- ATTAINS_data$TADA_with_ATTAINS %>%
dplyr::filter(ATTAINS.assessmentunitidentifier == "IL_I-84")
Analysis_data <- ATTAINS_data$TADA_with_ATTAINS %>%
dplyr::filter(ATTAINS.assessmentunitidentifier == "IL_I-84") %>%
dplyr::select(-contains("ATTAINS.")) %>%
sf::st_drop_geometry() %>%
TADA_RetainRequired()
## [1] "TADA_RetainRequired: removing columns not required for TADA workflow including original columns that have been replaced with TADA prefix duplicates."
## [1] "The following non-required columns were removed: index, ActivityDepthAltitudeReferencePointText, ActivityEndDate, ActivityEndTime.Time, ActivityEndTime.TimeZoneCode, ActivityEndDateTime, ActivityConductingOrganizationText, SampleAquifer, ActivityLocation.LatitudeMeasure, ActivityLocation.LongitudeMeasure, ResultStatusIdentifier, ResultWeightBasisText, ResultTemperatureBasisText, ResultParticleSizeBasisText, USGSPCode, BinaryObjectFileName, BinaryObjectFileTypeCode, AnalysisStartDate, ResultDetectionQuantitationLimitUrl, LabSamplePreparationUrl, timeZoneStart, timeZoneEnd, SourceMapScaleNumeric, HorizontalAccuracyMeasure.MeasureValue, HorizontalAccuracyMeasure.MeasureUnitCode, HorizontalCollectionMethodName, VerticalMeasure.MeasureValue, VerticalMeasure.MeasureUnitCode, VerticalAccuracyMeasure.MeasureValue, VerticalAccuracyMeasure.MeasureUnitCode, VerticalCollectionMethodName, VerticalCoordinateReferenceSystemDatumName, FormationTypeText, ProjectMonitoringLocationWeightingUrl, DrainageAreaMeasure.MeasureValue, DrainageAreaMeasure.MeasureUnitCode, ContributingDrainageAreaMeasure.MeasureValue and ContributingDrainageAreaMeasure.MeasureUnitCode."
# Create table of monitoring location identifiers
MonitoringLocations <- Analysis_data %>%
dplyr::select(MonitoringLocationName, MonitoringLocationIdentifier, OrganizationFormalName) %>%
dplyr::distinct()
DT::datatable(MonitoringLocations, fillContainer = TRUE)
# Create pie of results by organization
Orgs_pie <- TADA_FieldValuesPie(Analysis_data, field = "OrganizationFormalName")
Orgs_pie
We can see that there are 11 monitoring locations from 7 organizations with results from 2010-01-22 to 2020-12-09. There are 63501 results in the data frame.
Water Chemistry Data Preparation and QC
Before we can begin comparisons between the water chemistry results and a water quality standard, there are some additional data preparation and QC steps that can be performed using TADA functions.
First, we can check the data for additional conditions which might
cause us to exclude certain results from further analysis. For example,
we can use TADA_FlagMethod
to check for invalid analytical
method-characteristic combinations; TADA_FlagSpeciation
to
check for invalid characteristics-method speciation combinations,
TADA_FlagResultUnit
to check the the validity of each
characteristic-media-result unit combination, and
TADA_FlagFraction
to check the validity of
characteristic-fraction combinations. In this simple example, we will
remove all invalid combinations identified by each of these functions.
When setting up your own workflow, you will want to review each function
and its output more carefully before moving on.
# Flag and remove results
Analysis_data <- Analysis_data %>%
TADA_FlagMethod(clean = TRUE) %>%
TADA_FlagSpeciation(clean = "both") %>%
TADA_FlagResultUnit(clean = "both") %>%
TADA_FlagFraction(clean = TRUE)
Another set of TADA flagging functions,
TADA_FlagAboveThreshold
and
TADA_FlagBelowThreshold
, can be used to check results
against national lower and upper thresholds. As in the previous
examples, we will set these functions to remove any results that fall
outside the national thresholds.
# Flag and remove results
Analysis_data <- Analysis_data %>%
TADA_FlagAboveThreshold(clean = TRUE) %>%
TADA_FlagBelowThreshold(clean = TRUE)
We can also review the data set to see if it contains potential duplicate results from within a single organization or potential duplicates from within multiple organizations (such as when two or more organizations monitor the same location and may submit duplicate results).
We will select to keep only unique samples from
TADA_FindPotentialDuplicatesSingleOrg
by filtering for
TADA.SingleOrgDup.Flag equals “Unique”. Then we will search for
potential duplicates from multiple orgs with
TADA_FindPotentialDuplicatesMultipleOrgs
and filter only to
retain only one value per potential duplicate by filtering for
TADA.ResultSelectedMultipleOrgs equals “Y”.
If you would like to prioritize results from one organization over
another, this can be done using the org_hierarchy argument in
TADA_FindPotentialDuplicatesMultipleOrgs
. Information on
how to this can be found in the function reference for TADA_FindPotentialDuplicatesMultipleOrgs.
In this example, we will use the default setting “none” where a single
representative is selected randomly from each duplicate group.
# Flag and remove results
Analysis_data <- Analysis_data %>%
TADA_FindPotentialDuplicatesSingleOrg() %>%
dplyr::filter(TADA.SingleOrgDup.Flag == "Unique") %>%
TADA_FindPotentialDuplicatesMultipleOrgs(
dist_buffer = 100,
org_hierarchy = "none"
) %>%
dplyr::filter(TADA.ResultSelectedMultipleOrgs == "Y")
## [1] "107 groups of potentially duplicated results found in dataset. These have been placed into duplicate groups in the TADA.SingleOrgDupGroupID column and the function randomly selected one result from each group to represent a single, unduplicated value. Selected values are indicated in the TADA.SingleOrgDup.Flag as 'Unique', while duplicates are flagged as 'Duplicate' for easy filtering."
## [1] "No duplicate results detected. Returning input dataframe with duplicate flagging columns set to 'N'."
Next we can remove QC and qualified samples (with qualifiers
identified as suspect) using TADA_FindQCActivities
and
TADA_FlagMeasureQualifierCode
, respectively. See the TADA
Module 1 vignettes for more information on how these functions identify
and flag results for removal as you may wish to make different decisions
than the TADA defaults regarding which results to retain.
# Flag and remove results
Analysis_data <- Analysis_data %>%
TADA_FindQCActivities(clean = TRUE) %>%
TADA_FlagMeasureQualifierCode(clean = TRUE)
## [1] "Quality control samples have been removed or were not present in the input dataframe. Returning dataframe with TADA.ActivityType.Flag column for tracking."
Censored Data
Censored data are measurements for which the true value is not known,
but we can estimate the value based on lower or upper detection
conditions and limit types. TADA fills missing
TADA.ResultMeasureValue and
TADA.ResultMeasure.MeasureUnitCode values with values and units
from TADA.DetectionQuantitationLimitMeasure.MeasureValue and
TADA.DetectionQuantitationLimitMeasure.MeasureUnitCode,
respectively, using the TADA_AutoClean
function.
The TADA package currently has functions that summarize censored data
incidence in the dataset and perform simple substitutions of censored
data values, including x times the detection limit and random selection
of a value between 0 and the detection limit. The user may specify the
methods used for non-detects and over-detects separately in the input to
the TADA_SimpleCensoredMethods
function. The next step we
take in this example is to perform simple conversions to the censored
data in the dataset: we keep over-detects as is (no conversion made) and
convert non-detect values to 0.5 times the detection limit (half the
detection limit).
See the TADA Module 1 vignettes for more detailed information on the
logic behind
TADA_SimpleCensoredMethods
.
After running TADA_SimpleCensoredMethods
, we will also
filter the data to remove any remaining NAs.
Analysis_data <- TADA_SimpleCensoredMethods(Analysis_data,
nd_method = "multiplier",
nd_multiplier = 0.5,
od_method = "as-is",
od_multiplier = "null"
) %>%
dplyr::filter(!is.na(TADA.ResultMeasureValue))
Harmonize Results
The TADA_GetSynonymRef
function generates a synonym
reference table that is specific to the input dataframe. Users can
review how their input data relates to standard TADA values for the
following elements: TADA.CharacteristicName,
TADA.ResultSampleFractionText, TADA.MethodSpeciationName, and
TADA.ResultMeasure.MeasureUnitCode and edit if desired.
Users can also edit the reference file to meet their needs if
desired. The download argument can be used to save the harmonization
file to your current working directory when
download = TRUE
, the default is
download = FALSE
. In this example, we will modify the
harmonization file to group results with the fraction “NA” and results
with the fraction “TOTAL” for pH and water temperature.
The TADA_HarmonizeSynonyms
function then compares the
input dataframe to the TADA Synonym Reference Table and makes
conversions where target characteristics/fractions/speciations/units are
provided. This function also appends a column called
TADA.Harmonized.Flag, indicating which results had metadata
changed/converted in this function. The purpose of this function is to
make similar data consistent and therefore easier to compare and
analyze.
UniqueHarmonizationRef <- TADA_GetSynonymRef(Analysis_data)
UniqueHarmonizationRef_edit <- UniqueHarmonizationRef %>%
dplyr::mutate(
Target.TADA.CharacteristicName = ifelse(TADA.CharacteristicName == "TEMPERATURE, WATER", "TEMPERATURE", TADA.CharacteristicName),
Target.TADA.ResultSampleFractionText = ifelse(TADA.CharacteristicName == "PH", NA, Target.TADA.ResultSampleFractionText),
HarmonizationGroup = ifelse(TADA.CharacteristicName == "PH", "PH", HarmonizationGroup),
HarmonizationGroup = ifelse(Target.TADA.CharacteristicName == "TEMPERATURE", "TEMPERATURE",
HarmonizationGroup
)
)
Harmonized_data <- TADA_HarmonizeSynonyms(Analysis_data,
ref = UniqueHarmonizationRef_edit
)
Total Nitrogen and Total Phosphorus Calculations
TADA_CalculateTotalNP
uses the Nutrient
Aggregation logic to add together specific subspecies to obtain a
total. TADA adds one more equation to the mix: total particulate
nitrogen + total dissolved nitrogen. The function uses as many
subspecies as possible to calculate a total for each given site, date,
and depth group, but it will estimate total nitrogen with whatever
subspecies are present. This function creates NEW total nutrient
measurements (total nitrogen unfiltered as N and total phosphorus
unfiltered as P) and adds them to the dataframe.
Users can use the default summation worksheet (see
TADA_GetNutrientSummationRef
) or customize it to suit their
needs. The function also requires a daily aggregation value, either
minimum, maximum, or mean. The default is ‘max’, which means that if
multiple measurements of the same subspecies-fraction-speciation-unit
occur on the same day at the same site and depth, the function will pick
the maximum value to use in summation calculations. In this example, we
will use the default summation worksheet to obtain total nitrogen.
Harmonized_data <- TADA_CalculateTotalNP(Harmonized_data, daily_agg = "max")
## [1] "Aggregation results:"
##
## No aggregation needed Selected as max aggregate value
## 45701 4861
Parameter Level Filtering
Now we can filter to our three parameters of interest and use
TADA_Stats
take a look at some basic statistics for each,
including location count, measurement count, min, max, and more.
# review unique identifiers
unique(Harmonized_data$TADA.ComparableDataIdentifier)
## [1] "STREAM WIDTH MEASURE_NA_NA_M"
## [2] "TEMPERATURE_NA_NA_DEG C"
## [3] "STREAM FLOW, INSTANTANEOUS_NA_NA_CFS"
## [4] "NUMBER OF SAMPLING POINTS_NA_NA_COUNT"
## [5] "DEPTH_NA_NA_M"
## [6] "HEIGHT, GAGE_NA_NA_M"
## [7] "SUSPENDED SEDIMENT CONCENTRATION (SSC)_SUSPENDED_NA_UG/L"
## [8] "TEMPERATURE, AIR_NA_NA_DEG C"
## [9] "BAROMETRIC PRESSURE_NA_NA_MM/HG"
## [10] "SPECIFIC CONDUCTANCE_TOTAL_NA_US/CM @25C"
## [11] "ACIDITY, (H+)_TOTAL_NA_UG/L"
## [12] "OXYGEN_NA_NA_UG/L"
## [13] "OXYGEN_NA_NA_% SATURATN"
## [14] "PH_NA_NA_STD UNITS"
## [15] "CARBON DIOXIDE_TOTAL_NA_UG/L"
## [16] "CARBONATE_DISSOLVED_NA_UG/L"
## [17] "BICARBONATE_DISSOLVED_NA_UG/L"
## [18] "NITROGEN, MIXED FORMS (NH3), (NH4), ORGANIC, (NO2) AND (NO3)_UNFILTERED_AS N_MG/L"
## [19] "NITROGEN, MIXED FORMS (NH3), (NH4), ORGANIC, (NO2) AND (NO3)_FILTERED_AS N_MG/L"
## [20] "ORGANIC NITROGEN_UNFILTERED_AS N_MG/L"
## [21] "ORGANIC NITROGEN_FILTERED_AS N_MG/L"
## [22] "AMMONIA AND AMMONIUM_FILTERED_AS N_MG/L"
## [23] "NITRITE_FILTERED_AS N_MG/L"
## [24] "NITRATE_FILTERED_AS N_MG/L"
## [25] "KJELDAHL NITROGEN_FILTERED_AS N_MG/L"
## [26] "KJELDAHL NITROGEN_UNFILTERED_AS N_MG/L"
## [27] "NITRATE + NITRITE_FILTERED_AS N_MG/L"
## [28] "ORTHOPHOSPHATE_FILTERED_AS P_UG/L"
## [29] "PHOSPHORUS_UNFILTERED_AS P_UG/L"
## [30] "PHOSPHORUS_FILTERED_AS P_UG/L"
## [31] "ORGANIC CARBON_DISSOLVED_NA_UG/L"
## [32] "INORGANIC CARBON_SUSPENDED_NA_UG/L"
## [33] "ORGANIC CARBON_SUSPENDED_NA_UG/L"
## [34] "CARBON_SUSPENDED_NA_UG/L"
## [35] "HARDNESS, CA, MG_NA_AS CACO3_MG/L"
## [36] "HARDNESS, NON-CARBONATE_DISSOLVED_AS CACO3_MG/L"
## [37] "CALCIUM_DISSOLVED_NA_UG/L"
## [38] "MAGNESIUM_DISSOLVED_NA_UG/L"
## [39] "SODIUM_DISSOLVED_NA_UG/L"
## [40] "SODIUM ADSORPTION RATIO [(NA)/(SQ ROOT OF 1/2 CA + MG)]_NA_NA_NA"
## [41] "POTASSIUM_DISSOLVED_NA_UG/L"
## [42] "CHLORIDE_DISSOLVED_NA_UG/L"
## [43] "SULFATE_DISSOLVED_NA_UG/L"
## [44] "FLUORIDE_DISSOLVED_NA_UG/L"
## [45] "SILICA_DISSOLVED_NA_UG/L"
## [46] "ARSENIC_DISSOLVED_NA_UG/L"
## [47] "BORON_DISSOLVED_NA_UG/L"
## [48] "IRON_DISSOLVED_NA_UG/L"
## [49] "STRONTIUM_DISSOLVED_NA_UG/L"
## [50] "VANADIUM_DISSOLVED_NA_UG/L"
## [51] "LITHIUM_DISSOLVED_NA_UG/L"
## [52] "SELENIUM_DISSOLVED_NA_UG/L"
## [53] "FECAL COLIFORM_NA_NA_CFU/100ML"
## [54] "NITROGEN_NON-FILTERABLE (PARTICLE)_AS N_MG/L"
## [55] "UV 254_DISSOLVED_NA_UNITS/CM"
## [56] "CHLORSULFURON_DISSOLVED_NA_UG/L"
## [57] "FLUMETSULAM_DISSOLVED_NA_UG/L"
## [58] "HALOSULFURON-METHYL_DISSOLVED_NA_UG/L"
## [59] "IMAZAQUIN_DISSOLVED_NA_UG/L"
## [60] "IMAZETHAPYR_DISSOLVED_NA_UG/L"
## [61] "NICOSULFURON_DISSOLVED_NA_UG/L"
## [62] "PROSULFURON_DISSOLVED_NA_UG/L"
## [63] "ABSORBANCE AT 280 NANOMETERS_DISSOLVED_NA_UNITS/CM"
## [64] "AMINOMETHYLPHOSPHONIC ACID_DISSOLVED_NA_UG/L"
## [65] "GLUFOSINATE_DISSOLVED_NA_UG/L"
## [66] "GLYPHOSATE_DISSOLVED_NA_UG/L"
## [67] "UV 254_DISSOLVED_NA_L/MGDOC*M"
## [68] "TURBIDITY_NA_NA_NTU"
## [69] "ALACHLOR_DISSOLVED_NA_UG/L"
## [70] "ATRAZINE_DISSOLVED_NA_UG/L"
## [71] "AZINPHOS-METHYL_DISSOLVED_NA_UG/L"
## [72] "BIFENTHRIN_DISSOLVED_NA_UG/L"
## [73] "BUTYLATE_DISSOLVED_NA_UG/L"
## [74] "CARBARYL_DISSOLVED_NA_UG/L"
## [75] "CARBOFURAN_DISSOLVED_NA_UG/L"
## [76] "CHLORPYRIFOS_DISSOLVED_NA_UG/L"
## [77] "DIAZINON_DISSOLVED_NA_UG/L"
## [78] "S-ETHYL DIPROPYLTHIOCARBAMATE_DISSOLVED_NA_UG/L"
## [79] "FONOFOS_DISSOLVED_NA_UG/L"
## [80] "HEXAZINONE_DISSOLVED_NA_UG/L"
## [81] "MALATHION_DISSOLVED_NA_UG/L"
## [82] "METHIDATHION_DISSOLVED_NA_UG/L"
## [83] "METOLACHLOR_DISSOLVED_NA_UG/L"
## [84] "MOLINATE_DISSOLVED_NA_UG/L"
## [85] "OXYFLUORFEN_DISSOLVED_NA_UG/L"
## [86] "PENDIMETHALIN_DISSOLVED_NA_UG/L"
## [87] "PIPERONYL BUTOXIDE_DISSOLVED_NA_UG/L"
## [88] "PROMETRYN_DISSOLVED_NA_UG/L"
## [89] "SIMAZINE_DISSOLVED_NA_UG/L"
## [90] "THIOBENCARB_DISSOLVED_NA_UG/L"
## [91] "AZOXYSTROBIN_DISSOLVED_NA_UG/L"
## [92] "CYANAZINE_DISSOLVED_NA_UG/L"
## [93] "DIMETHOATE_DISSOLVED_NA_UG/L"
## [94] "DIURON_DISSOLVED_NA_UG/L"
## [95] "FIPRONIL_DISSOLVED_NA_UG/L"
## [96] "FIPRONIL DESULFINYL_DISSOLVED_NA_UG/L"
## [97] "FIPRONIL SULFIDE_DISSOLVED_NA_UG/L"
## [98] "FIPRONIL SULFONE_DISSOLVED_NA_UG/L"
## [99] "METCONAZOLE_DISSOLVED_NA_UG/L"
## [100] "MYCLOBUTANIL_DISSOLVED_NA_UG/L"
## [101] "PROPANIL_DISSOLVED_NA_UG/L"
## [102] "PROPICONAZOLE_DISSOLVED_NA_UG/L"
## [103] "PYRACLOSTROBIN_DISSOLVED_NA_UG/L"
## [104] "TEBUCONAZOLE_DISSOLVED_NA_UG/L"
## [105] "TERBUTHYLAZINE_DISSOLVED_NA_UG/L"
## [106] "TETRACONAZOLE_DISSOLVED_NA_UG/L"
## [107] "TRIFLOXYSTROBIN_DISSOLVED_NA_UG/L"
## [108] "DISULFOTON_DISSOLVED_NA_UG/L"
## [109] "FAMOXADONE_DISSOLVED_NA_UG/L"
## [110] "KRESOXIM-METHYL_DISSOLVED_NA_UG/L"
## [111] "NORFLURAZON_DISSOLVED_NA_UG/L"
## [112] "PROMETON_DISSOLVED_NA_UG/L"
## [113] "PRONAMIDE_DISSOLVED_NA_UG/L"
## [114] "AZINPHOS-METHYL OXYGEN ANALOG_DISSOLVED_NA_UG/L"
## [115] "CHLORPYRIFOS O.A._DISSOLVED_NA_UG/L"
## [116] "3,4-DICHLOROPHENYLUREA_DISSOLVED_NA_UG/L"
## [117] "1-(3,4-DICHLOROPHENYL)-3-METHYL UREA_DISSOLVED_NA_UG/L"
## [118] "DIAZOXON_DISSOLVED_NA_UG/L"
## [119] "MALAOXON_DISSOLVED_NA_UG/L"
## [120] "4-HYDROXYCHLOROTHALONIL_DISSOLVED_NA_UG/L"
## [121] "IMIDACLOPRID_DISSOLVED_NA_UG/L"
## [122] "METALAXYL_DISSOLVED_NA_UG/L"
## [123] "1H-1,2,4-TRIAZOLE_DISSOLVED_NA_UG/L"
## [124] "2-AMINOBENZIMIDAZOLE_DISSOLVED_NA_UG/L"
## [125] "BENZAMIDE, 2-AMINO-N-(1-METHYLETHYL)-_DISSOLVED_NA_UG/L"
## [126] "2-ISOPROPYL-6-METHYL-4-PYRIMIDINOL_DISSOLVED_NA_UG/L"
## [127] "3-HYDROXYCARBOFURAN_DISSOLVED_NA_UG/L"
## [128] "4-(HYDROXYMETHYL) PENDIMETHALIN_DISSOLVED_NA_UG/L"
## [129] "4-CHLOROBENZYL METHYL SULFOXIDE_DISSOLVED_NA_UG/L"
## [130] "4-HYDROXY MOLINATE_DISSOLVED_NA_UG/L"
## [131] "4-HYDROXYHEXAZINONE A_DISSOLVED_NA_UG/L"
## [132] "ACEPHATE_DISSOLVED_NA_UG/L"
## [133] "ACETOCHLOR_DISSOLVED_NA_UG/L"
## [134] "2-CHLORO-N-(2-ETHYL-6-METHYLPHENYL)ACETAMIDE_DISSOLVED_NA_UG/L"
## [135] "ACETOCHLOR OA_DISSOLVED_NA_UG/L"
## [136] "ACETOCHLOR ESA_DISSOLVED_NA_UG/L"
## [137] "ACETOCHLOR SULFINYLACETIC ACID_DISSOLVED_NA_UG/L"
## [138] "2-CHLORO-2',6'-DIETHYLACETANILIDE_DISSOLVED_NA_UG/L"
## [139] "ALACHLOR OA_DISSOLVED_NA_UG/L"
## [140] "ALACHLOR SULFINYLACETIC ACID_DISSOLVED_NA_UG/L"
## [141] "ALDICARB_DISSOLVED_NA_UG/L"
## [142] "ALDICARB SULFONE_DISSOLVED_NA_UG/L"
## [143] "ALDICARB SULFOXIDE_DISSOLVED_NA_UG/L"
## [144] "AMETRYN_DISSOLVED_NA_UG/L"
## [145] "ASULAM_DISSOLVED_NA_UG/L"
## [146] "BENTAZON_DISSOLVED_NA_UG/L"
## [147] "BROMACIL_DISSOLVED_NA_UG/L"
## [148] "BROMOXYNIL_DISSOLVED_NA_UG/L"
## [149] "BUTRALIN_DISSOLVED_NA_UG/L"
## [150] "2-CHLORO-4,6-DIAMINO-S-TRIAZINE_DISSOLVED_NA_UG/L"
## [151] "CARBENDAZIM_DISSOLVED_NA_UG/L"
## [152] "CARBOXY MOLINATE_DISSOLVED_NA_UG/L"
## [153] "2-CHORO-6-ETHYLAMINO-4-AMINO-S-TRIAZINE_DISSOLVED_NA_UG/L"
## [154] "CHLOROSULFONAMIDE ACID_DISSOLVED_NA_UG/L"
## [155] "2-CHLORO-4-ISOPROPYLAMINO-6-AMINO-S-TRIAZINE_DISSOLVED_NA_UG/L"
## [156] "CIS-CYHALOTHRIC ACID_DISSOLVED_NA_UG/L"
## [157] "CHLORTHAL-MONOMETHYL_DISSOLVED_NA_UG/L"
## [158] "DECHLOROFIPRONIL_DISSOLVED_NA_UG/L"
## [159] "DECHLOROMETOLACHLOR_DISSOLVED_NA_UG/L"
## [160] "DEIODO FLUBENDIAMIDE_DISSOLVED_NA_UG/L"
## [161] "DEISOPROPYL PROMETRYN_DISSOLVED_NA_UG/L"
## [162] "DEMETHYL HEXAZINONE B_DISSOLVED_NA_UG/L"
## [163] "DESMETHYLNORFLURAZON_DISSOLVED_NA_UG/L"
## [164] "METRIBUZIN DA_DISSOLVED_NA_UG/L"
## [165] "METRIBUZIN DADK_DISSOLVED_NA_UG/L"
## [166] "DESULFINYLFIPRONIL AMIDE_DISSOLVED_NA_UG/L"
## [167] "DICAMBA_DISSOLVED_NA_UG/L"
## [168] "DICHLORVOS_DISSOLVED_NA_UG/L"
## [169] "DICROTOPHOS_DISSOLVED_NA_UG/L"
## [170] "DIDEMETHYL HEXAZINONE F_DISSOLVED_NA_UG/L"
## [171] "TEBUTHIURON TP 104_DISSOLVED_NA_UG/L"
## [172] "DIFLUBENZURON_DISSOLVED_NA_UG/L"
## [173] "DIFLUFENZOPYR_DISSOLVED_NA_UG/L"
## [174] "BENZENEPROPANENITRILE, .ALPHA.-(CYCLOPROPYLCARBONYL)- 2-(METHYLSULFONYL)-.BETA.- OXO-4-(TRIFLUOROMETHYL)-_DISSOLVED_NA_UG/L"
## [175] "DIMETHENAMID_DISSOLVED_NA_UG/L"
## [176] "DIMETHENAMID OXANILIC ACID_DISSOLVED_NA_UG/L"
## [177] "DIMETHENAMID ESA_DISSOLVED_NA_UG/L"
## [178] "DIMETHENAMID SULFINYLACETIC ACID_DISSOLVED_NA_UG/L"
## [179] "DEMETON-S_DISSOLVED_NA_UG/L"
## [180] "DISULFOTON OXON SULFOXIDE_DISSOLVED_NA_UG/L"
## [181] "DISULFOTON OXON SULFONE_DISSOLVED_NA_UG/L"
## [182] "DISULFOTON SULFONE_DISSOLVED_NA_UG/L"
## [183] "OXYDISULFOTON_DISSOLVED_NA_UG/L"
## [184] "DEMETHYLFLUOMETURON_DISSOLVED_NA_UG/L"
## [185] "EPTC DEGRADATE R248722_DISSOLVED_NA_UG/L"
## [186] "2-[(2-ETHYL-6-METHYLPHENYL)-AMINO]-1-PROPANOL_DISSOLVED_NA_UG/L"
## [187] "ETHOPROP_DISSOLVED_NA_UG/L"
## [188] "O-ETHYL O-METHYL S-PROPYL PHOSPHOROTHIOATE_DISSOLVED_NA_UG/L"
## [189] "ETOXAZOLE_DISSOLVED_NA_UG/L"
## [190] "FENAMIPHOS_DISSOLVED_NA_UG/L"
## [191] "FENAMIPHOS SULFONE_DISSOLVED_NA_UG/L"
## [192] "FENAMIPHOS SULFOXIDE_DISSOLVED_NA_UG/L"
## [193] "FENBUTATIN-OXIDE_DISSOLVED_NA_UG/L"
## [194] "FENTIN_DISSOLVED_NA_UG/L"
## [195] "1H-PYRAZOLE-3-CARBOXAMIDE, 5-AMINO-1-[2,6-DICHLORO-4-(TRIFLUOROMETHYL)PHENYL]-4-[(TRIFLUOROMETHYL)SULFINYL]-_DISSOLVED_NA_UG/L"
## [196] "FIPRONIL SULFONATE_DISSOLVED_NA_UG/L"
## [197] "FLUBENDIAMIDE_DISSOLVED_NA_UG/L"
## [198] "FLUOMETURON_DISSOLVED_NA_UG/L"
## [199] "2-(1-HYDROXYETHYL)-6-METHYLANILINE_DISSOLVED_NA_UG/L"
## [200] "HEXAZINONE TRANSFORMATION PRODUCT C_DISSOLVED_NA_UG/L"
## [201] "HEXAZINONE TRANSFORMATION PRODUCT D_DISSOLVED_NA_UG/L"
## [202] "HEXAZINONE TRANSFORMATION PRODUCT E_DISSOLVED_NA_UG/L"
## [203] "HYDROXYACETOCHLOR_DISSOLVED_NA_UG/L"
## [204] "HYDROXYALACHLOR_DISSOLVED_NA_UG/L"
## [205] "HYDROXY MONODEMETHYL FLUOMETURON_DISSOLVED_NA_UG/L"
## [206] "HYDROXYDIAZINON_DISSOLVED_NA_UG/L"
## [207] "HYDROXY DIDEMETHYL FLUOMETURON_DISSOLVED_NA_UG/L"
## [208] "HYDROXYFLUOMETURON_DISSOLVED_NA_UG/L"
## [209] "HYDROXYTEBUTHIURON_DISSOLVED_NA_UG/L"
## [210] "HYDROXYMETOLACHLOR_DISSOLVED_NA_UG/L"
## [211] "HYDROXYPHTHALAZINONE_DISSOLVED_NA_UG/L"
## [212] "HYDROXYSIMAZINE_DISSOLVED_NA_UG/L"
## [213] "IMAZAMOX_DISSOLVED_NA_UG/L"
## [214] "INDOXACARB_DISSOLVED_NA_UG/L"
## [215] "ISOXAFLUTOLE_DISSOLVED_NA_UG/L"
## [216] "ISOXAFLUTOLE ACID METABOLITE RPA 203328_DISSOLVED_NA_UG/L"
## [217] "LACTOFEN_DISSOLVED_NA_UG/L"
## [218] "LINURON_DISSOLVED_NA_UG/L"
## [219] "MCPA_DISSOLVED_NA_UG/L"
## [220] "METHAMIDOPHOS_DISSOLVED_NA_UG/L"
## [221] "METHOMYL_DISSOLVED_NA_UG/L"
## [222] "ETHANIMIDOTHIOIC ACID, N-HYDROXY-, METHYL ESTER_DISSOLVED_NA_UG/L"
## [223] "METHOXYFENOZIDE_DISSOLVED_NA_UG/L"
## [224] "METHYL PARAOXON_DISSOLVED_NA_UG/L"
## [225] "METOLACHLOR HYDROXY MORPHOLINONE_DISSOLVED_NA_UG/L"
## [226] "METOLACHLOR OA_DISSOLVED_NA_UG/L"
## [227] "METOCHLOR ESA_DISSOLVED_NA_UG/L"
## [228] "METRIBUZIN_DISSOLVED_NA_UG/L"
## [229] "METRIBUZIN DK_DISSOLVED_NA_UG/L"
## [230] "NALED_DISSOLVED_NA_UG/L"
## [231] "NOVALURON_DISSOLVED_NA_UG/L"
## [232] "DEISOPROPYLHYDROXYATRAZINE_DISSOLVED_NA_UG/L"
## [233] "O-ETHYL S-METHYL S-PROPYL PHOSPHORODITHIOATE_DISSOLVED_NA_UG/L"
## [234] "O-ETHYL S-PROPYL PHOSPHOROTHIOATE_DISSOLVED_NA_UG/L"
## [235] "DEETHYLHYDROXYATRAZINE_DISSOLVED_NA_UG/L"
## [236] "2-HYDROXYATRAZINE_DISSOLVED_NA_UG/L"
## [237] "OMETHOATE_DISSOLVED_NA_UG/L"
## [238] "ORTHOSULFAMURON_DISSOLVED_NA_UG/L"
## [239] "ORYZALIN_DISSOLVED_NA_UG/L"
## [240] "OXAMYL_DISSOLVED_NA_UG/L"
## [241] "2-(DIMETHYLAMINO)-N-HYDROXY-2-OXOETHANIMIDOTHIOIC ACID METHYL ESTER_DISSOLVED_NA_UG/L"
## [242] "PARAOXON_DISSOLVED_NA_UG/L"
## [243] "PHORATE_DISSOLVED_NA_UG/L"
## [244] "PHORATE O.A._DISSOLVED_NA_UG/L"
## [245] "PHORATE OXYGEN ANALOG SULFONE_DISSOLVED_NA_UG/L"
## [246] "PHORATE OXON SULFOXIDE_DISSOLVED_NA_UG/L"
## [247] "PHORATE SULFONE_DISSOLVED_NA_UG/L"
## [248] "PHORATE SULFOXIDE_DISSOLVED_NA_UG/L"
## [249] "PHTHALAZINONE_DISSOLVED_NA_UG/L"
## [250] "PROFENOFOS_DISSOLVED_NA_UG/L"
## [251] "PROPARGITE_DISSOLVED_NA_UG/L"
## [252] "PROPAZINE_DISSOLVED_NA_UG/L"
## [253] "PROPOXUR_DISSOLVED_NA_UG/L"
## [254] "PYRIDABEN_DISSOLVED_NA_UG/L"
## [255] "PYRIPROXYFEN_DISSOLVED_NA_UG/L"
## [256] "SEC-ACETOCHLOR OXANILIC ACID_DISSOLVED_NA_UG/L"
## [257] "SEC-ALACHLOR OXANILIC ACID_DISSOLVED_NA_UG/L"
## [258] "SIDURON_DISSOLVED_NA_UG/L"
## [259] "SULFENTRAZONE_DISSOLVED_NA_UG/L"
## [260] "SULFOMETURON METHYL_DISSOLVED_NA_UG/L"
## [261] "SULFOSULFURON_DISSOLVED_NA_UG/L"
## [262] "SULFOSULFURON ETHYL SULFONE_DISSOLVED_NA_UG/L"
## [263] "2,3,3-TRICHLORO-2-PROPENE-1-SULFONIC ACID (SODIUM SALT)_DISSOLVED_NA_UG/L"
## [264] "TEBUFENOZIDE_DISSOLVED_NA_UG/L"
## [265] "PHOSTEBUPIRIM_DISSOLVED_NA_UG/L"
## [266] "TEBUPIRIMPHOS OXON_DISSOLVED_NA_UG/L"
## [267] "TEBUTHIURON_DISSOLVED_NA_UG/L"
## [268] "TEBUTHIURON TRANSFORMATION PRODUCT 108_DISSOLVED_NA_UG/L"
## [269] "TEBUTHIURON TP 109 (OH)_DISSOLVED_NA_UG/L"
## [270] "TERBACIL_DISSOLVED_NA_UG/L"
## [271] "TERBUFOS_DISSOLVED_NA_UG/L"
## [272] "TERBUFOS OXON_DISSOLVED_NA_UG/L"
## [273] "TERBUFOS OXYGEN ANALOG SULFONE_DISSOLVED_NA_UG/L"
## [274] "TERBUFOS OXON SULFOXIDE_DISSOLVED_NA_UG/L"
## [275] "TERBUFOS SULFONE_DISSOLVED_NA_UG/L"
## [276] "TERBUFOS SULFOXIDE_DISSOLVED_NA_UG/L"
## [277] "TRANSPERMETHRIN_DISSOLVED_NA_UG/L"
## [278] "TRIALLATE_DISSOLVED_NA_UG/L"
## [279] "TRIBUFOS_DISSOLVED_NA_UG/L"
## [280] "TRICLOPYR_DISSOLVED_NA_UG/L"
## [281] "HEXAZINONE TRANSFORMATION PRODUCT G_DISSOLVED_NA_UG/L"
## [282] "TEBUTHIURON TP 106_DISSOLVED_NA_UG/L"
## [283] "1RS CIS-PERMETHRIN_DISSOLVED_NA_UG/L"
## [284] "ALACHLOR ESA_DISSOLVED_NA_UG/L"
## [285] "3-PHENOXYBENZOIC ACID_DISSOLVED_NA_UG/L"
## [286] "TOTAL DISSOLVED SOLIDS_DISSOLVED_NA_UG/L"
## [287] "SUSPENDED SEDIMENT CONCENTRATION (SSC)_SUSPENDED_NA_%"
## [288] "3-PHENOXYBENZOIC ACID-13C6_DISSOLVED_NA_%"
## [289] "ACETOCHLOR-D11_DISSOLVED_NA_%"
## [290] "ALACHLOR-D13_DISSOLVED_NA_%"
## [291] "CARBARYL-D7_DISSOLVED_NA_%"
## [292] "CARBENDAZIM-D4_DISSOLVED_NA_%"
## [293] "CARBOFURAN-D3_DISSOLVED_NA_%"
## [294] "DEETHYLATRAZINE-D6_DISSOLVED_NA_%"
## [295] "DIAZINON-D10_DISSOLVED_NA_%"
## [296] "DIFLUBENZURON-D4_DISSOLVED_NA_%"
## [297] "HEXAZINONE-D6_DISSOLVED_NA_%"
## [298] "LINURON-D6_DISSOLVED_NA_%"
## [299] "MALATHION-D10_DISSOLVED_NA_%"
## [300] "METOLACHLOR-D6_DISSOLVED_NA_%"
## [301] "NICOSULFURON-D6_DISSOLVED_NA_%"
## [302] "TEBUCONAZOLE-D6_DISSOLVED_NA_%"
## [303] "THIOBENCARB-D10_DISSOLVED_NA_%"
## [304] "CIS-PERMETHRIN-13C6_DISSOLVED_NA_%"
## [305] "BUTACHLOR ESA_DISSOLVED_NA_%"
## [306] "DIMETHACHLOR SULFONIC ACID_DISSOLVED_NA_%"
## [307] "DIURON-D6_DISSOLVED_NA_%"
## [308] "PARTICULATE NITROGEN/PARTICULATE ORGANIC CARBON_NA_NA_NA"
## [309] "ESCHERICHIA COLI_NA_NA_CFU/100ML"
## [310] "2,4-D-D3_DISSOLVED_NA_%"
## [311] "CHLORIMURON-ETHYL_DISSOLVED_NA_UG/L"
## [312] "2,4-D_DISSOLVED_NA_UG/L"
## [313] "PYMETROZINE_DISSOLVED_NA_UG/L"
## [314] "RBP HIGH WATER MARK_NA_NA_M/SEC"
## [315] "AMMONIA AND AMMONIUM_DISSOLVED_NA_MG/L"
## [316] "NITRITE_FILTERED_NA_MG/L"
## [317] "SAMPLE TIME, ELAPSED_NA_NA_MINUTES"
## [318] "WIND VELOCITY_NA_NA_M/SEC"
## [319] "VELOCITY - STREAM_NA_NA_M/SEC"
## [320] "INORGANIC CARBON_DISSOLVED_NA_UG/L"
## [321] "SEDIMENT_SUSPENDED_NA_G"
## [322] ".ALPHA.-ENDOSULFAN_DISSOLVED_NA_UG/L"
## [323] "DIELDRIN_DISSOLVED_NA_UG/L"
## [324] "1-NAPHTHOL_DISSOLVED_NA_UG/L"
## [325] "TRANSIT RATE, SAMPLER_NA_NA_M/SEC"
## [326] "CYFLUTHRIN_DISSOLVED_NA_UG/L"
## [327] "BETA CYPERMETHRIN_DISSOLVED_NA_UG/L"
## [328] "ENDOSULFAN SULFATE_DISSOLVED_NA_UG/L"
## [329] "IPRODIONE_DISSOLVED_NA_UG/L"
## [330] "ISOFENPHOS_DISSOLVED_NA_UG/L"
## [331] ".LAMBDA.-CYHALOTHRIN_DISSOLVED_NA_UG/L"
## [332] "PHOSMET_DISSOLVED_NA_UG/L"
## [333] "TEFLUTHRIN_DISSOLVED_NA_UG/L"
## [334] "2-ETHYL-6-METHYLANILINE_DISSOLVED_NA_UG/L"
## [335] "3,4-DICHLOROANILINE_DISSOLVED_NA_UG/L"
## [336] "3,5-DICHLOROANILINE_DISSOLVED_NA_UG/L"
## [337] "4-CHLORO-2-METHYLPHENOL_DISSOLVED_NA_UG/L"
## [338] "ETHION MONOOXON_DISSOLVED_NA_UG/L"
## [339] "PHOSMETOXON_DISSOLVED_NA_UG/L"
## [340] "CIS-PROPICONAZOLE_DISSOLVED_NA_UG/L"
## [341] "TRANS-PROPICONAZOLE_DISSOLVED_NA_UG/L"
## [342] "ETHION_DISSOLVED_NA_UG/L"
## [343] "2,6-DIETHYLANILINE_DISSOLVED_NA_UG/L"
## [344] "TRIFLURALIN_DISSOLVED_NA_UG/L"
## [345] "METHYL PARATHION_DISSOLVED_NA_UG/L"
## [346] "BENFLURALIN_DISSOLVED_NA_UG/L"
## [347] "CHLORTHAL-DIMETHYL_DISSOLVED_NA_UG/L"
## [348] ".ALPHA.-1,2,3,4,5,6-HEXACHLOROCYCLOHEXANE-D6 OR ALPHA-HCH D6_DISSOLVED_NA_%"
## [349] "BED SEDIMENT PARTICLE SIZE_BED SEDIMENT_NA_%"
## [350] "CYCLOATE_DISSOLVED_NA_UG/L"
## [351] "DIPHENAMID_DISSOLVED_NA_UG/L"
## [352] "MCPB_DISSOLVED_NA_UG/L"
## [353] "METHIOCARB_DISSOLVED_NA_UG/L"
## [354] "2,4-DB_DISSOLVED_NA_UG/L"
## [355] "PROPHAM_DISSOLVED_NA_UG/L"
## [356] "PICLORAM_DISSOLVED_NA_UG/L"
## [357] "NEBURON_DISSOLVED_NA_UG/L"
## [358] "FENURON_DISSOLVED_NA_UG/L"
## [359] "DINOSEB_DISSOLVED_NA_UG/L"
## [360] "DICHLORPROP_DISSOLVED_NA_UG/L"
## [361] "CLOPYRALID_DISSOLVED_NA_UG/L"
## [362] "ACIFLUORFEN_DISSOLVED_NA_UG/L"
## [363] "BENDIOCARB_DISSOLVED_NA_UG/L"
## [364] "BENOMYL_DISSOLVED_NA_UG/L"
## [365] "CAFFEINE_DISSOLVED_NA_UG/L"
## [366] "2,4-D METHYL ESTER_DISSOLVED_NA_UG/L"
## [367] "CHLORAMBEN METHYL ESTER_DISSOLVED_NA_UG/L"
## [368] "N-(4-CHLOROPHENYL)-N'-METHYLUREA_DISSOLVED_NA_UG/L"
## [369] "BENSULFURON-METHYL_DISSOLVED_NA_UG/L"
## [370] "METSULFURON-METHYL_DISSOLVED_NA_UG/L"
## [371] "2,4-D, SALTS AND ESTERS_NA_AS 2,4-D_UG/L"
## [372] "2,4,5-T_DISSOLVED_NA_%"
## [373] "CAFFEINE-13C_DISSOLVED_NA_%"
## [374] "2,4-D, SALTS AND ESTERS_NA_NA_UG/L"
## [375] "CARBONATE_TOTAL_NA_UG/L"
## [376] "BICARBONATE_TOTAL_NA_UG/L"
## [377] "SUSPENDED SEDIMENT DISCHARGE_SUSPENDED_NA_LB/DAY"
## [378] "CHLOROPHYLL A_UNFILTERED_NA_UG/L"
## [379] "NITRATE + NITRITE_UNFILTERED_AS N_MG/L"
## [380] "NITROGEN_UNFILTERED_AS N_MG/L"
## [381] "DISSOLVED OXYGEN (DO)_NA_NA_MG/L"
## [382] "CONDUCTIVITY_TOTAL_NA_US/CM"
## [383] "PH_NA_NA_NA"
## [384] "CHLOROPHYLL A_FILTERABLE_NA_UG/L"
## [385] "MICROCYSTIN_TOTAL_NA_UG/KG"
## [386] "SPECIFIC CONDUCTANCE_NA_NA_US/CM"
## [387] "DISSOLVED OXYGEN SATURATION_NA_NA_%"
## [388] "STRONTIUM_TOTAL_NA_UG/L"
## [389] "MAGNESIUM_TOTAL_NA_UG/L"
## [390] "MANGANESE_TOTAL_NA_UG/L"
## [391] "NICKEL_TOTAL_NA_UG/L"
## [392] "ZINC_TOTAL_NA_UG/L"
## [393] "POTASSIUM_TOTAL_NA_UG/L"
## [394] "LEAD_TOTAL_NA_UG/L"
## [395] "VANADIUM_TOTAL_NA_UG/L"
## [396] "SODIUM_TOTAL_NA_UG/L"
## [397] "TEMPERATURE, SAMPLE_NA_NA_DEG C"
## [398] "CADMIUM_TOTAL_NA_UG/L"
## [399] "SILVER_TOTAL_NA_UG/L"
## [400] "BERYLLIUM_TOTAL_NA_UG/L"
## [401] "CHROMIUM_TOTAL_NA_UG/L"
## [402] "BARIUM_TOTAL_NA_UG/L"
## [403] "BORON_TOTAL_NA_UG/L"
## [404] "CALCIUM_TOTAL_NA_UG/L"
## [405] "COBALT_TOTAL_NA_UG/L"
## [406] "COPPER_TOTAL_NA_UG/L"
## [407] "CYANIDE_TOTAL_NA_UG/L"
## [408] "HARDNESS, CA, MG_NA_NA_MG/L"
## [409] "ARSENIC_TOTAL_NA_UG/L"
## [410] "METOLACHLOR_TOTAL_NA_UG/L"
## [411] "METRIBUZIN_TOTAL_NA_UG/L"
## [412] "NICKEL_DISSOLVED_NA_UG/L"
## [413] "AMMONIA-NITROGEN_UNFILTERED_AS N_MG/L"
## [414] "PARATHION_TOTAL_NA_UG/L"
## [415] "METHYL PARATHION_TOTAL_NA_UG/L"
## [416] "PENDIMETHALIN_TOTAL_NA_UG/L"
## [417] "LEAD_DISSOLVED_NA_UG/L"
## [418] "POLYCHLORINATED BIPHENYLS_TOTAL_NA_UG/L"
## [419] "METHOXYCHLOR_TOTAL_NA_UG/L"
## [420] "MANGANESE_DISSOLVED_NA_UG/L"
## [421] "MALATHION_TOTAL_NA_UG/L"
## [422] "HEXACHLOROBENZENE_TOTAL_NA_UG/L"
## [423] "HEPTACHLOR EPOXIDE_TOTAL_NA_UG/L"
## [424] "PENTACHLOROPHENOL_TOTAL_NA_UG/L"
## [425] "HEPTACHLOR_TOTAL_NA_UG/L"
## [426] "ZINC_DISSOLVED_NA_UG/L"
## [427] "TRIFLURALIN_TOTAL_NA_UG/L"
## [428] "TOXAPHENE_TOTAL_NA_UG/L"
## [429] "TERBUFOS_TOTAL_NA_UG/L"
## [430] "SULFATE_TOTAL_NA_UG/L"
## [431] "VOLATILE SUSPENDED SOLIDS_NA_NA_UG/L"
## [432] "TOTAL SUSPENDED SOLIDS_NON-FILTERABLE (PARTICLE)_NA_UG/L"
## [433] "PHORATE_TOTAL_NA_UG/L"
## [434] "SIMAZINE_TOTAL_NA_UG/L"
## [435] "SILVEX_TOTAL_NA_UG/L"
## [436] "SILVER_DISSOLVED_NA_UG/L"
## [437] "PICLORAM_TOTAL_NA_UG/L"
## [438] "PHENOLS_TOTAL_NA_UG/L"
## [439] "CADMIUM_DISSOLVED_NA_UG/L"
## [440] "BUTYLATE_TOTAL_NA_UG/L"
## [441] "LINDANE_TOTAL_NA_UG/L"
## [442] ".ALPHA.-HEXACHLOROCYCLOHEXANE_TOTAL_NA_UG/L"
## [443] "CAPTAN_TOTAL_NA_UG/L"
## [444] "BARIUM_DISSOLVED_NA_UG/L"
## [445] "ALUMINUM_DISSOLVED_NA_UG/L"
## [446] "ALDRIN_TOTAL_NA_UG/L"
## [447] "ALACHLOR_TOTAL_NA_UG/L"
## [448] "ACIFLUORFEN_TOTAL_NA_UG/L"
## [449] "ACETOCHLOR_TOTAL_NA_UG/L"
## [450] "2,4-D_TOTAL_NA_UG/L"
## [451] "PHOSPHORUS_DISSOLVED_NA_UG/L"
## [452] "BERYLLIUM_DISSOLVED_NA_UG/L"
## [453] "P,P'-DDT_TOTAL_NA_UG/L"
## [454] "FONOFOS_TOTAL_NA_UG/L"
## [455] "ATRAZINE_TOTAL_NA_UG/L"
## [456] "S-ETHYL DIPROPYLTHIOCARBAMATE_TOTAL_NA_UG/L"
## [457] "ENDRIN_TOTAL_NA_UG/L"
## [458] "DINOSEB_TOTAL_NA_UG/L"
## [459] "DIELDRIN_TOTAL_NA_UG/L"
## [460] "FLUORIDE_TOTAL_NA_UG/L"
## [461] "DIAZINON_TOTAL_NA_UG/L"
## [462] "P,P'-DDE_TOTAL_NA_UG/L"
## [463] "P,P'-DDD_TOTAL_NA_UG/L"
## [464] "DALAPON_TOTAL_NA_UG/L"
## [465] "CIS-CHLORDANE_TOTAL_NA_UG/L"
## [466] "DICAMBA_TOTAL_NA_UG/L"
## [467] "CHLORIDE_TOTAL_NA_UG/L"
## [468] "CHROMIUM_DISSOLVED_NA_UG/L"
## [469] "TRANS-CHLORDANE_TOTAL_NA_UG/L"
## [470] "COBALT_DISSOLVED_NA_UG/L"
## [471] "ORGANIC CARBON_TOTAL_NA_UG/L"
## [472] "COPPER_DISSOLVED_NA_UG/L"
## [473] "CYANAZINE_TOTAL_NA_UG/L"
## [474] "CHLORPYRIFOS_TOTAL_NA_UG/L"
## [475] "PHEOPHYTIN A_TOTAL_NA_UG/L"
## [476] "CHLOROPHYLL A, CORRECTED FOR PHEOPHYTIN_TOTAL_NA_UG/L"
## [477] "CHLOROPHYLL A, UNCORRECTED FOR PHEOPHYTIN_TOTAL_NA_UG/L"
## [478] "CHLOROPHYLL B_TOTAL_NA_UG/L"
## [479] "CHLOROPHYLL C_TOTAL_NA_UG/L"
## [480] "IRON_TOTAL_NA_UG/L"
## [481] "ALUMINUM_TOTAL_NA_UG/L"
## [482] "HARDNESS, CA, MG_TOTAL_NA_MG/L"
## [483] "SELENIUM_TOTAL_NA_UG/L"
## [484] "MICROCYSTIN_NA_NA_UG/L"
## [485] "CYANIDE, AVAILABLE_NA_NA_UG/L"
## [486] "GLYPHOSATE_TOTAL_NA_UG/L"
## [487] "NITRATE_UNFILTERED_AS N_MG/L"
## [488] "ORTHOPHOSPHATE_UNFILTERED_AS P_UG/L"
## [489] "VOLATILE SUSPENDED SOLIDS_TOTAL_NA_UG/L"
## [490] "SPECIFIC CONDUCTANCE_TOTAL_NA_US/CM"
## [491] "OXIDATION REDUCTION POTENTIAL (ORP)_TOTAL_NA_VOLTS"
## [492] "ALACHLOR_ORGANIC_NA_UG/L"
## [493] "AMMONIA-NITROGEN_INORGANIC_NA_MG/L"
## [494] "ATRAZINE_ORGANIC_NA_UG/L"
## [495] "CHLORPYRIFOS_ORGANIC_NA_UG/L"
## [496] "CYANAZINE_ORGANIC_NA_UG/L"
## [497] "PENDIMETHALIN_ORGANIC_NA_UG/L"
## [498] "TRIFLURALIN_ORGANIC_NA_UG/L"
## [499] "CHLOROPHYLL A, CORRECTED FOR PHEOPHYTIN_BIOAVAILABLE_NA_UG/L"
## [500] "PHEOPHYTIN A_BIOAVAILABLE_NA_UG/L"
## [501] "PHOSPHORUS_INORGANIC_NA_UG/L"
## [502] "ORTHOPHOSPHATE_INORGANIC_NA_UG/L"
## [503] "TOTAL SUSPENDED SOLIDS_INORGANIC_NA_UG/L"
## [504] "VOLATILE SUSPENDED SOLIDS_INORGANIC_NA_UG/L"
## [505] "KJELDAHL NITROGEN_INORGANIC_NA_MG/L"
## [506] "ORGANIC CARBON_INORGANIC_NA_UG/L"
## [507] "TEMPERATURE_SUSPENDED_NA_DEG C"
## [508] "OXIDATION REDUCTION POTENTIAL (ORP)_SUSPENDED_NA_VOLTS"
## [509] "SPECIFIC CONDUCTANCE_SUSPENDED_NA_US/CM"
## [510] "DISSOLVED OXYGEN (DO)_SUSPENDED_NA_MG/L"
## [511] "PH_SUSPENDED_NA_NA"
## [512] "CHLOROPHYLL A, CORRECTED FOR PHEOPHYTIN_INORGANIC_NA_UG/L"
## [513] "PHEOPHYTIN A_INORGANIC_NA_UG/L"
## [514] "CHLOROPHYLL A, CORRECTED FOR PHEOPHYTIN_NA_NA_UG/L"
## [515] "AMMONIA-NITROGEN_FILTERABLE_NA_MG/L"
## [516] "CHLOROPHYLL A, CORRECTED FOR PHEOPHYTIN_FILTERABLE_NA_UG/L"
## [517] "NITRATE_FILTERABLE_AS N_MG/L"
## [518] "PHEOPHYTIN A_FILTERABLE_NA_UG/L"
## [519] "ORTHOPHOSPHATE_FILTERABLE_NA_UG/L"
## [520] "VOLATILE SUSPENDED SOLIDS_VOLATILE_NA_UG/L"
## [521] "TURBIDITY_SUSPENDED_NA_NTU"
## [522] "COUNT_NA_NA_COUNT"
## [523] "CONDUCTIVITY_NA_NA_US/CM"
## [524] "AMMONIA_UNFILTERED_AS N_MG N/L******"
## [525] "GRAN ACID NEUTRALIZING CAPACITY_NA_NA_MEQ/L"
## [526] "CALCIUM_TOTAL RECOVERABLE_NA_UG/L"
## [527] "CHLORIDE_TOTAL RECOVERABLE_NA_UG/L"
## [528] "TRUE COLOR_NA_NA_PCU"
## [529] "MAGNESIUM_TOTAL RECOVERABLE_NA_UG/L"
## [530] "NITRATE_FILTERED_AS N_MG N/L******"
## [531] "NITRITE_FILTERED_AS N_MG N/L******"
## [532] "TOTAL NITROGEN, MIXED FORMS_UNFILTERED_AS N_MG/L"
## [533] "POTASSIUM_NA_NA_UG/L"
## [534] "SILICA_NA_NA_UG/L"
## [535] "SODIUM_TOTAL RECOVERABLE_NA_UG/L"
## [536] "SULFATE_TOTAL RECOVERABLE_NA_UG/L"
## [537] "TOTAL PHOSPHORUS, MIXED FORMS_TOTAL RECOVERABLE_NA_UG/L"
## [538] "CHLOROPHYLL A_NA_NA_G/M2"
## [539] "AMMONIA_UNFILTERED_AS N_MG/L"
## [540] "CHLOROPHYLL A_NA_NA_UG/L"
## [541] "MERCURY_NA_NA_UG/L"
## [542] "2-CHLOROBIPHENYL_NA_NA_UG/KG"
## [543] "3-CHLOROBIPHENYL_NA_NA_UG/KG"
## [544] "4-CHLOROBIPHENYL_NA_NA_UG/KG"
## [545] "2,2'-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [546] "2,3-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [547] "2,3'-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [548] "2,4-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [549] "2,4'-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [550] "2,5-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [551] "2,6-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [552] "3,3'-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [553] "PCB-12/13_NA_NA_UG/KG"
## [554] "3,5-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [555] "4,4'-DICHLOROBIPHENYL_NA_NA_UG/KG"
## [556] "2,2',3-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [557] "2,2',4-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [558] "PCB-18/30_NA_NA_UG/KG"
## [559] "2,2',6-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [560] "PCB-21/33_NA_NA_UG/KG"
## [561] "2,3,4'-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [562] "2,3,5-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [563] "2,3,6-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [564] "2,3',4-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [565] "PCB-26/29_NA_NA_UG/KG"
## [566] "2,3',6-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [567] "2,4',5-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [568] "2,4',6-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [569] "2,3',5'-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [570] "3,3',4-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [571] "3,3',5-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [572] "3,4,4'-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [573] "3,4,5-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [574] "3,4',5-TRICHLOROBIPHENYL_NA_NA_UG/KG"
## [575] "2,2',3,4'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [576] "2,2',3,5-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [577] "PCB-45/51_NA_NA_UG/KG"
## [578] "2,2',3,6'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [579] "2,2',4,5-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [580] "PCB-50/53_NA_NA_UG/KG"
## [581] "2,2',5,5'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [582] "2,2',6,6'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [583] "2,3,3',4-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [584] "2,3,3',5-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [585] "2,3,3',5'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [586] "PCB-59/62/75_NA_NA_UG/KG"
## [587] "2,3,4,4'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [588] "2,3,4',5-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [589] "2,3,4',6-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [590] "2,3',4,4'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [591] "2,3',4,5-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [592] "2,3',4,5'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [593] "2,3',5,5'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [594] "2,3',5',6-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [595] "3,3',4,4'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [596] "3,3',4,5-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [597] "3,3',4,5'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [598] "3,3',5,5'-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [599] "3,4,4',5-TETRACHLOROBIPHENYL_NA_NA_UG/KG"
## [600] "2,2',3,3',4-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [601] "PCB-83/99_NA_NA_UG/KG"
## [602] "2,2',3,3',6-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [603] "2,2',3,4,6'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [604] "PCB-90/101/113_NA_NA_UG/KG"
## [605] "2,2',3,5,5'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [606] "2,2',3,5,6'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [607] "2,2',3,6,6'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [608] "2,2',4,5',6-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [609] "2,2',4,6,6'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [610] "2,3,3',4,4'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [611] "2,3,3',4,5-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [612] "2,3,3',4',5-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [613] "PCB-108/124_NA_NA_UG/KG"
## [614] "2,3,3',5,5'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [615] "2,3,3',5,6-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [616] "2,3,4,4',5-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [617] "2,3',4,4',5-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [618] "2,3',4,5,5'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [619] "2,3',4,5',6-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [620] "2,3,3',4',5'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [621] "2,3',4,4',5'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [622] "3,3',4,4',5-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [623] "3,3',4,5,5'-PENTACHLOROBIPHENYL_NA_NA_UG/KG"
## [624] "PCB-129/138/160/163_NA_NA_UG/KG"
## [625] "2,2',3,3',4,5'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [626] "2,2',3,3',4,6-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [627] "2,2',3,3',5,5'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [628] "PCB-134/143_NA_NA_UG/KG"
## [629] "2,2',3,3',6,6'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [630] "PCB-139/140_NA_NA_UG/KG"
## [631] "2,2',3,4,5,5'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [632] "2,2',3,4,5,6-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [633] "2,2',3,4,6,6'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [634] "2,2',3,4',5,5'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [635] "PCB-147/149_NA_NA_UG/KG"
## [636] "2,2',3,4',5,6'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [637] "2,2',3,4',6,6'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [638] "2,2',3,5,6,6'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [639] "PCB-153/168_NA_NA_UG/KG"
## [640] "2,2',4,4',6,6'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [641] "2,3,3',4,4',6-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [642] "2,3,3',4,5,5'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [643] "2,3,3',4,5',6-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [644] "2,3,3',4',5,5'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [645] "2,3,3',5,5',6-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [646] "2,3',4,4',5,5'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [647] "3,3',4,4',5,5'-HEXACHLOROBIPHENYL_NA_NA_UG/KG"
## [648] "2,2',3,3',4,4',5-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [649] "2,2',3,3',4,5,5'-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [650] "2,2',3,3',4,5,6'-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [651] "2,2',3,3',4,5',6-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [652] "2,2',3,3',4,5',6'-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [653] "2,2',3,3',5,5',6-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [654] "PCB-180/193_NA_NA_UG/KG"
## [655] "2,2',3,4,4',5,6-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [656] "2,2',3,4,4',5,6'-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [657] "2,2',3,4,4',6,6'-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [658] "2,2',3,4,5,6,6'-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [659] "2,2',3,4',5,5',6-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [660] "2,2',3,4',5,6,6'-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [661] "2,3,3',4,4',5,5'-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [662] "2,3,3',4,4',5,6-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [663] "2,3,3',4,4',5',6-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [664] "2,3,3',4,5,5',6-HEPTACHLOROBIPHENYL_NA_NA_UG/KG"
## [665] "2,2',3,3',4,4',5,5'-OCTACHLOROBIPHENYL_NA_NA_UG/KG"
## [666] "2,2',3,3',4,4',5,6'-OCTACHLOROBIPHENYL_NA_NA_UG/KG"
## [667] "PCB-197/200_NA_NA_UG/KG"
## [668] "2,2',3,3',4,5',6,6'-OCTACHLOROBIPHENYL_NA_NA_UG/KG"
## [669] "2,2',3,4,4',5,5',6-OCTACHLOROBIPHENYL_NA_NA_UG/KG"
## [670] "2,2',3,4,4',5,6,6'-OCTACHLOROBIPHENYL_NA_NA_UG/KG"
## [671] "2,3,3',4,4',5,5',6-OCTACHLOROBIPHENYL_NA_NA_UG/KG"
## [672] "2,2',3,3',4,4',5,5',6-NONACHLOROBIPHENYL_NA_NA_UG/KG"
## [673] "2,2',3,3',4,4',5,6,6'-NONACHLOROBIPHENYL_NA_NA_UG/KG"
## [674] "DECACHLOROBIPHENYL_NA_NA_UG/KG"
## [675] "TOTAL PCBS_NA_NA_UG/KG"
## [676] "HEPTAFLUOROBUTYRIC ACID_NA_NA_UG/KG"
## [677] "PERFLUOROVALERIC ACID_NA_NA_UG/KG"
## [678] "PERFLUOROHEXANOIC ACID_NA_NA_UG/KG"
## [679] "PERFLUOROHEPTANOIC ACID_NA_NA_UG/KG"
## [680] "PERFLUOROOCTANOIC ACID_NA_NA_UG/KG"
## [681] "PERFLUORONONANOIC ACID_NA_NA_UG/KG"
## [682] "PERFLUORODECANOIC ACID_NA_NA_UG/KG"
## [683] "PERFLUOROUNDECANOIC ACID_NA_NA_UG/KG"
## [684] "PERFLUORODODECANOIC ACID_NA_NA_UG/KG"
## [685] "PERFLUOROTRIDECANOIC ACID_NA_NA_UG/KG"
## [686] "PERFLUOROTETRADECANOIC ACID_NA_NA_UG/KG"
## [687] "PERFLUOROBUTANESULFONIC ACID_NA_NA_UG/KG"
## [688] "1-PENTANESULFONIC ACID, 1,1,2,2,3,3,4,4,5,5,5-UNDECAFLUORO-_NA_NA_UG/KG"
## [689] "PERFLUOROHEXANESULFONIC ACID_NA_NA_UG/KG"
## [690] "1-HEPTANESULFONIC ACID, 1,1,2,2,3,3,4,4,5,5,6,6,7,7,7-PENTADECAFLUORO-_NA_NA_UG/KG"
## [691] "PERFLUOROOCTANE SULFONIC ACID_NA_NA_UG/KG"
## [692] "1-NONANESULFONIC ACID, 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9-NONADECAFLUORO-_NA_NA_UG/KG"
## [693] "1-DECANESULFONIC ACID, 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,10-HENEICOSAFLUORO-_NA_NA_UG/KG"
## [694] "PERFLUORODODECANESULFONIC ACID_NA_NA_UG/KG"
## [695] "FLUOROTELOMER SULFONATE 4:2_NA_NA_UG/KG"
## [696] "1-OCTANESULFONIC ACID, 3,3,4,4,5,5,6,6,7,7,8,8,8-TRIDECAFLUORO-_NA_NA_UG/KG"
## [697] "FLUOROTELOMER SULFONATE 8:2_NA_NA_UG/KG"
## [698] "PERFLUOROOCTANESULFONAMIDE_NA_NA_UG/KG"
## [699] "N-METHYLPERFLUORO-1-OCTANESULFONAMIDE_NA_NA_UG/KG"
## [700] "SULFLURAMID_NA_NA_UG/KG"
## [701] "N-METHYL PERFLUOROOCTANESULFONAMIDOACETIC ACID_NA_NA_UG/KG"
## [702] "GLYCINE, N-ETHYL-N-[(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,8-HEPTADECAFLUOROOCTYL)SULFONYL]-_NA_NA_UG/KG"
## [703] "2-(N-METHYLPERFLUORO-1-OCTANESULFONAMIDO)-ETHANOL_NA_NA_UG/KG"
## [704] "N-ETHYL-N-(2-HYDROXYETHYL)PERFLUOROOCTANESULFONAMIDE_NA_NA_UG/KG"
## [705] "HEXAFLUOROPROPYLENE OXIDE DIMER ACID_NA_NA_UG/KG"
## [706] "4,8-DIOXA-3H-PERFLUORONONANOIC ACID_NA_NA_UG/KG"
## [707] "POTASSIUM 9-CHLOROHEXADECAFLUORO-3-OXANONANE-1-SULFONATE_NA_NA_UG/KG"
## [708] "11-CHLOROEICOSAFLUORO-3-OXAUNDECANE-1-SULFONIC ACID_NA_NA_UG/KG"
## [709] "LIPIDS_NA_NA_UG/KG"
## [710] "CHLOROPHYLL/PHEOPHYTIN RATIO_FILTERED, LAB_NA_UG/L"
## [711] "AMMONIA-NITROGEN_FILTERED_AS N_MG/L"
## [712] "SILICA_FILTERED, LAB_AS SI_UG/L"
## [713] "TOTAL NITROGEN, MIXED FORMS_FILTERED_AS N_MG/L"
## [714] "TOTAL PHOSPHORUS, MIXED FORMS_UNFILTERED_AS P_UG/L"
## [715] "VOLATILE SUSPENDED SOLIDS_FILTERED, LAB_NA_UG/L"
## [716] "SOLUBLE REACTIVE PHOSPHORUS (SRP)_FILTERED_AS P_UG/L"
## [717] "CHLORIDE_FILTERED, LAB_AS CL_UG/L"
## [718] "TOTAL NITROGEN, MIXED FORMS_UNFILTERED_AS N_MG N/L******"
# filter for three comparable data identifiers of interest
Filtered_data <- Harmonized_data %>%
dplyr::filter(TADA.ComparableDataIdentifier %in% c("TEMPERATURE_NA_NA_DEG C", "PH_NA_NA_NA", "TOTAL NITROGEN, MIXED FORMS_UNFILTERED_AS N_MG/L"))
# generate stats table
Filtered_data_stats <- TADA_Stats(Filtered_data)
## [1] "Note: Your dataset contains TADA-generated total nutrient results, which have fewer columns populated with metadata. This might affect how groups are displayed in the stats table."
DT::datatable(Filtered_data_stats, fillContainer = TRUE)
Standard Comparisons With Scatterplot and Pie Chart
Next, we will create a two characteristic scatterplot of pH and
temperature to begin visualizing the data, using
TADA_TwoCharacteristicScatterplot
.
# choose two and generate scatterplot
TADA_TwoCharacteristicScatterplot(Harmonized_data, id_cols = "TADA.ComparableDataIdentifier", groups = c("TEMPERATURE_NA_NA_DEG C", "PH_NA_NA_NA"))
Let’s focus on just one characteristic, pH. We can filter the data
frame to retain only pH samples. We can also add a column to indicate
whether each result falls within the water quality standard range for pH
(6.5 - 9). From this pH-only frame we can create a table with just a few
columns for easier review, and a single characteristic scatterplot using
TADA_Scatterplot
. In this example, horizontal lines have
been added to indicate the upper and lower ends of the water quality
standard. These are not a default option in
TADA_Scatterplot
but can be added via the
plotly
package.
# comparison to standard for ph
pH_Standard <- Filtered_data %>%
dplyr::filter(TADA.ComparableDataIdentifier == "PH_NA_NA_NA") %>%
dplyr::mutate(MeetsStandard = ifelse(TADA.ResultMeasureValue >= 6.5 & TADA.ResultMeasureValue <= 9, "Yes", "No"))
# subset of pH data with fewer rows
pH_Table <- pH_Standard %>%
dplyr::select(
MonitoringLocationIdentifier, OrganizationFormalName, ActivityStartDate, TADA.ResultMeasureValue,
MeetsStandard
)
DT::datatable(pH_Table, fillContainer = TRUE)
# pH scatterplot
pH_Scatter <- TADA_Scatterplot(pH_Standard, id_cols = "TADA.ComparableDataIdentifier") %>%
plotly::add_lines(
y = 6.5,
x = c(min(pH_Standard$ActivityStartDate), max(pH_Standard$ActivityStartDate)),
inherit = FALSE,
showlegend = FALSE,
line = list(color = "red"),
hoverinfo = "none"
) %>%
plotly::add_lines(
y = 9,
x = c(min(pH_Standard$ActivityStartDate), max(pH_Standard$ActivityStartDate)),
inherit = FALSE,
showlegend = FALSE,
line = list(color = "red"),
hoverinfo = "none"
)
pH_Scatter
Comparison of temperature to water quality standards is a little more complicated as the maximum temperature varies by season and there are multiple components of the temperature standard. For this example, we will focus on the “shall never exceed” seasonal temperature standards.
These are:
17.7 deg C for January, February, March, and December
33.7 deg C for April, May, June, July, August, September, October, and November.
We can use lubridate
and dplyr
functions to
assign the appropriate standard to each result by using
lubridate::month
to identify the month in which each sample
was collected and dplyr::mutate
to create a new column for
the temperature standard. Then the results can be compared to the
standard.
We can use TADA_Scatterplot
again to visualize the data.
Due to the seasonal variation in the standard and the ten-year date
range in our data set, we may want to consider other visualizations to
visually review the number of results not meeting the standard. We can
use TADA_FieldValuesPie
on the MeetsStandard field we
created to see how many samples met or did not meet the standard.
Creating a table also allows for easy filtering of results to identify the results that did not meet the standard and review during which years and seasons they occurred.
# comparison to standard for temperature
Temp_Standard <- Filtered_data %>%
dplyr::filter(TADA.ComparableDataIdentifier == "TEMPERATURE_NA_NA_DEG C") %>%
dplyr::mutate(
MonthForAnalysis = lubridate::month(ActivityStartDate),
TempStandard = ifelse(MonthForAnalysis %in% c(1, 2, 3, 12), 17.7, 33.7),
MeetsStandard = ifelse(TADA.ResultMeasureValue < TempStandard,
"Yes", "No"
)
)
# create scatterplot for temperature
Temp_Scatter <- TADA_Scatterplot(Temp_Standard, id_cols = "TADA.ComparableDataIdentifier")
Temp_Scatter
# create pie chart for temperature
Temp_Pie <- TADA_FieldValuesPie(Temp_Standard, field = "MeetsStandard")
Temp_Pie
Additional Data Exploration
We may also want to use TADA functions for exploration and visualization of characteristics without water quality standards. For this example, we will use “TOTAL NITROGEN, MIXED FORMS_FILTERED, LAB_NA_MG/L”.
To better understand the distribution of results, we can use the TADA
functions TADA_Histogram
and TADA_Boxplot
.
TADA_Histogram
can be useful for identifying the overall
shape of the data.
# filter dataframe to comparable data identifier of interest
Nitrogen_data <- dplyr::filter(Filtered_data, TADA.ComparableDataIdentifier == "TOTAL NITROGEN, MIXED FORMS_UNFILTERED_AS N_MG/L")
# generate a histogram
Nitrogen_Histogram <- TADA_Histogram(Nitrogen_data, id_cols = "TADA.ComparableDataIdentifier")
# view histogram
Nitrogen_Histogram
TADA_Boxplot
can be useful for identifying skewness and
percentiles.
Nitrogen_Boxplot <- TADA_Boxplot(Nitrogen_data, id_cols = "TADA.ComparableDataIdentifier")
Nitrogen_Boxplot
Filtering the results of TADA_Stats
for only “TOTAL
NITROGEN, MIXED FORMS_TOTAL RECOVERABLE_NA_MG/L” and selecting a smaller
subset of columns or creating a single characteristic scatterplot may
also provide useful information.
# create table with nitrogen stats
Nitrogen_stats <- Filtered_data_stats %>%
dplyr::filter(TADA.ComparableDataIdentifier == "TOTAL NITROGEN, MIXED FORMS_UNFILTERED_AS N_MG/L") %>%
dplyr::select(Location_Count, Measurement_Count, Min, Max, Mean)
DT::datatable(Nitrogen_stats, fillContainer = TRUE)
# create nitrogen scatterplot
Nitrogen_Scatterplot <- TADA_Scatterplot(Nitrogen_data, id_cols = "TADA.ComparableDataIdentifier")
Nitrogen_Scatterplot
Reproducible and Documented
Major benefits to this type are workflow are that it is reproducible and the decisions at each step are well documented. This means that it is easy to go back and review every step, understand the decisions that were made, make changes as necessary, and run it again. If someone asks “How were data filtered prior to analysis?” or “How did you identify additional Monitoring Locations within the Assessment Unit?”, you can refer to the code and function documentation to provide answers.
For example, we could change the Assessment Unit of interest, modify
the relevant code chunks (potentially including the WQP query if the new
Assessment Unit is in a different HUC or state) and repeat the same
analysis for the same characteristics at a different location. We could
also modify the harmonization reference to group additional comparable
data (if appropriate) or add a step to run
TADA_ConvertResultUnits
an additional time outside of
TADA_AutoClean
if we wanted to convert temperature results
to deg F for analysis.
Or we could change or add additional characteristics to our analysis. We could even write additional custom functions or even use functions from other packages as needed for more complex standards, evaluate trends, or answer other questions using a TADA data frame.
The code chunk below displays the elapsed time it took to run the code chunks and create this document, providing an example of how incorporating TADA in your workflow can increase efficiency.
end.time <- Sys.time()
end.time - start.time
## Time difference of 1.011826 hours