Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
22138c1
Updates to usgs.ref
hillarymarler Jun 12, 2024
89ac0b8
Added code w/ no speciation column to usgs ref
hillarymarler Jun 12, 2024
f7fc9f6
Changes to TADA_CreateUnitRef
hillarymarler Jun 13, 2024
763eac8
Method speciation correct for user supplied and tada ref
hillarymarler Jun 13, 2024
447daa0
Update ref = wqx to handle method speciation
hillarymarler Jun 13, 2024
47804b1
Work on fixing error related to ref = wqx
hillarymarler Jun 13, 2024
efa830a
Merge branch 'develop' into 471-tada_convertresultunits-is-overwritin…
hillarymarler Jun 14, 2024
99a4ec2
Updates for detection limit
hillarymarler Jun 14, 2024
4549bc9
Detection limit unit correction
hillarymarler Jun 14, 2024
703dee2
Update example data
hillarymarler Jun 17, 2024
fca6b66
Updated vignette
hillarymarler Jun 17, 2024
da24099
Updates to examples
hillarymarler Jun 17, 2024
0f72519
Fixed ref = wqx bugs
hillarymarler Jun 17, 2024
845fa42
Added TADA.MethodSpeciationName to TADA_CreateUnitRef
hillarymarler Jun 17, 2024
24d2290
Removed unnecessary print message
hillarymarler Jun 17, 2024
22e8d4e
Fix bug so that user supplied ref works
hillarymarler Jun 17, 2024
9654c52
Update example data and documentation
hillarymarler Jun 17, 2024
3ec33fc
rmd updates
hillarymarler Jun 17, 2024
0d57a0c
Update test-UnitConversions.R
hillarymarler Jun 17, 2024
2fd3c42
Update boxplot example
hillarymarler Jun 17, 2024
02d41c4
Update Figures.R
hillarymarler Jun 17, 2024
5899171
Update TADA_Boxplot.Rd
hillarymarler Jun 18, 2024
c359c98
Update units in scatterplot example
hillarymarler Jun 18, 2024
7bedfad
Unit updates for examples
hillarymarler Jun 18, 2024
49e07f3
Merge branch 'develop' into 471-tada_convertresultunits-is-overwritin…
hillarymarler Jun 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion R/ExampleData.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
#' Data_Nutrients_UT <- TADA_DataRetrieval(statecode = "UT",
#' characteristicName = c("Ammonia", "Nitrate", "Nitrogen"),
#' startDate = "2020-10-01",
#' endDate = "2022-09-30")
#' endDate = "2022-09-30",
#' applyautoclean = TRUE)
#'
#' @docType data
#' @keywords data frame
Expand Down
9 changes: 4 additions & 5 deletions R/Figures.R
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,9 @@
#' # plot in list. In this example, we will group data in the input dataframe
#' # by both the TADA.ComparableDataIdentifier and the OrganizationIdentifier
#' Boxplots_TPbyOrg <- TADA_Boxplot(df, id_cols = c("TADA.ComparableDataIdentifier", "OrganizationIdentifier"))
#' # This example generates 4 box plots.
#' # This example generates 2 box plots.
#' Boxplots_TPbyOrg[[1]]
#' Boxplots_TPbyOrg[[2]]
#' Boxplots_TPbyOrg[[3]]
#'
#' # Create multiple boxplots with additional grouping columns and view the first
#' # plot in list. In this example, we will group data in the input dataframe
Expand Down Expand Up @@ -606,7 +605,7 @@ TADA_FieldValuesPie <- function(.data, field = "null", characteristicName = "nul
)


tada.pal <- tada.pal[2:(1 + colorCount)]
tada.pal <- tada.pal[1:colorCount]
}

if (colorCount > 14) {
Expand Down Expand Up @@ -833,12 +832,12 @@ TADA_Scatterplot <- function(.data, id_cols = c("TADA.ComparableDataIdentifier")
#' # Load example dataset:
#' data(Data_Nutrients_UT)
#' # Create a single scatterplot with two specified groups from TADA.ComparableDataIdentifier
#' TADA_TwoCharacteristicScatterplot(Data_Nutrients_UT, id_cols = "TADA.ComparableDataIdentifier", groups = c("AMMONIA_UNFILTERED_NA_MG/L", "NITRATE_UNFILTERED_NA_MG/L"))
#' TADA_TwoCharacteristicScatterplot(Data_Nutrients_UT, id_cols = "TADA.ComparableDataIdentifier", groups = c("AMMONIA_UNFILTERED_AS N_MG/L", "NITRATE_UNFILTERED_AS N_MG/L"))
#'
#' # Load example dataset:
#' data(Data_6Tribes_5y_Harmonized)
#' # Filter the example data so it includes only one TADA.ComparableDataIdentifier
#' df <- dplyr::filter(Data_6Tribes_5y_Harmonized, TADA.ComparableDataIdentifier == "TOTAL PHOSPHORUS, MIXED FORMS_UNFILTERED_AS P_UG/L")
#' df <- dplyr::filter(Data_6Tribes_5y_Harmonized, TADA.ComparableDataIdentifier == "TOTAL PHOSPHORUS, MIXED FORMS_UNFILTERED_AS P_MG/L")
#' # Creates a scatterplot including the two specified sites in the same plot:
#' TADA_TwoCharacteristicScatterplot(df, id_cols = "MonitoringLocationName", groups = c("Upper Red Lake: West", "Upper Red Lake: West-Central"))
#'
Expand Down
184 changes: 104 additions & 80 deletions R/UnitConversions.R
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@
#' one target unit. When print.message = FALSE, no message is printed. The default
#' is print.message = TRUE.
#
#' @return A dataframe with six columns: TADA.CharacteristicName,
#' @return A dataframe with seven columns: TADA.CharacteristicName,
#' TADA.ResultMeasure.MeasureUnitCode, ResultMeasure.MeasureUnitCode,
#' TADA.Target.ResultMeasureUnit, ConversionFactor, and ConversionCoefficient.
#' TADA.Target.ResultMeasureUnit, TADA.MethodSpeciatioName,
#' ConversionFactor, and ConversionCoefficient.
#' The number of rows will vary based on the number of unique
#' TADA.CharacteristicName/ResultMeasure.MeasureUnitCode combinations in the
#' initial TADA dataframe.
Expand All @@ -47,14 +48,32 @@ TADA_CreateUnitRef <- function(.data, print.message = TRUE) {

# Remove TADA.MethodSpeciationName column
data.units <- data.units %>%
dplyr::select(-TADA.MethodSpeciationName) %>%
dplyr::distinct()

# Import USGS default unit ref
usgs.ref <- TADA_GetUSGSSynonymRef()
# Make Target.Unit and Code uppercase
usgs.ref$Target.Unit <- toupper(usgs.ref$Target.Unit)
usgs.ref$Code <- toupper(usgs.ref$Code)

# Create ref for method speciation and unit for usgs results
usgs.method.unit <- usgs.ref %>%
dplyr::select(Code, CodeNoSpeciation, Target.Speciation) %>%
dplyr::mutate(TADA.ResultMeasure.MeasureUnitCode = toupper(Code),
CodeNoSpeciation = toupper(CodeNoSpeciation),
Target.Speciation = toupper(Target.Speciation)) %>%
dplyr::select(-Code)

# Add method speciation and unit for usgs results to data units df
data.units <- data.units %>%
dplyr::left_join(usgs.method.unit, by = "TADA.ResultMeasure.MeasureUnitCode") %>%
dplyr::mutate(TADA.ResultMeasure.MeasureUnitCode = ifelse(is.na(TADA.MethodSpeciationName) & !is.na(Target.Speciation),
CodeNoSpeciation,
TADA.ResultMeasure.MeasureUnitCode),
TADA.MethodSpeciationName = ifelse(is.na(TADA.MethodSpeciationName) & !is.na(Target.Speciation),
Target.Speciation, TADA.MethodSpeciationName)) %>%
dplyr::select(-CodeNoSpeciation, -Target.Speciation)


# Import WQX default unit ref
wqx.ref <- TADA_GetMeasureUnitRef()
Expand Down Expand Up @@ -111,7 +130,7 @@ TADA_CreateUnitRef <- function(.data, print.message = TRUE) {
dplyr::filter(!is.na(Conversion.Factor)) %>%
# Select columns needed for final unit ref
dplyr::select(
"TADA.CharacteristicName", "TADA.ResultMeasure.MeasureUnitCode",
"TADA.CharacteristicName", "TADA.ResultMeasure.MeasureUnitCode", "TADA.MethodSpeciationName",
"TADA.Target.ResultMeasure.MeasureUnitCode", "ResultMeasure.MeasureUnitCode",
"Last.Change.Date", "Conversion.Factor", "Conversion.Coefficient", "CharUnit"
)
Expand Down Expand Up @@ -320,15 +339,16 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) {

# import USGS ref for method speciation
usgs.ref <- TADA_GetUSGSSynonymRef() %>%
dplyr::select(Code, Target.Unit, Target.Speciation, Conversion.Factor) %>%
#dplyr::select(Code, Target.Speciation, Conversion.Factor) %>%
dplyr::rename(
TADA.ResultMeasure.MeasureUnitCode = Code,
TADA.Target.ResultMeasure.MeasureUnitCode = Target.Unit,
ResultMeasure.MeasureUnitCode = Code,
TADA.Target.MethodSpeciationName = Target.Speciation,
TADA.WQXUnitConversionFactor = Conversion.Factor
)


) %>%
dplyr::mutate(ResultMeasure.MeasureUnitCode.Upper = toupper(ResultMeasure.MeasureUnitCode),
TADA.Target.MethodSpeciationName = toupper(TADA.Target.MethodSpeciationName)) %>%
dplyr::select(ResultMeasure.MeasureUnitCode.Upper, TADA.Target.MethodSpeciationName)

# if user supplied unit reference was provided
if (is.data.frame(ref)) {
# required columns
Expand All @@ -348,18 +368,15 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) {

# join USGS ref for method speciation name information
unit.ref <- ref %>%
dplyr::left_join(usgs.ref, by = c(
"TADA.ResultMeasure.MeasureUnitCode",
"TADA.Target.ResultMeasure.MeasureUnitCode",
"TADA.WQXUnitConversionFactor"
))

# list of variables for joining unit ref with data
ref.join <- c("TADA.CharacteristicName", "TADA.ResultMeasure.MeasureUnitCode")
dplyr::mutate(ResultMeasure.MeasureUnitCode.Upper = toupper(ResultMeasure.MeasureUnitCode)) %>%
dplyr::left_join(usgs.ref, by =
"ResultMeasure.MeasureUnitCode.Upper") %>%
dplyr::select(-ResultMeasure.MeasureUnitCode.Upper) %>%
dplyr::distinct()

# create message to inform users if user-supplied unit reference contains all combinations present in TADA data frame
# create list of unique characteristic and unit combinations in data
check.units <- TADA_UniqueCharUnitSpeciation(.data) %>%
check.units <- TADA_CreateUnitRef(.data) %>%
dplyr::select(TADA.CharacteristicName, TADA.ResultMeasure.MeasureUnitCode) %>%
dplyr::distinct()

Expand Down Expand Up @@ -391,63 +408,59 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) {
))
}
}
# if no unit reference df was provided by user or user input was "tada"

# if user did not provide a data frame
if (!is.data.frame(ref)) {
if (ref == "tada") {
data.units <- TADA_CreateUnitRef(.data, print.message = FALSE)

# join USGS ref for method speciation name information
unit.ref <- data.units %>%
dplyr::select(-ResultMeasure.MeasureUnitCode) %>%
dplyr::distinct() %>%
dplyr::left_join(usgs.ref, by = c(
"TADA.ResultMeasure.MeasureUnitCode",
"TADA.Target.ResultMeasure.MeasureUnitCode",
"TADA.WQXUnitConversionFactor"
))

# list of variables for joining unit ref with data
ref.join <- c("TADA.CharacteristicName", "TADA.ResultMeasure.MeasureUnitCode")

print("TADA_ConvertResultUnits: TADA target units are assigned by default when no unit 'ref' is supplied as a function input.")

# if no unit reference df was provided by user or user input was "tada"
if (ref == "tada") {

unit.ref <- TADA_CreateUnitRef(.data, print.message = FALSE)

unit.ref <- unit.ref %>%
dplyr::mutate(ResultMeasure.MeasureUnitCode.Upper = toupper(ResultMeasure.MeasureUnitCode)) %>%
dplyr::left_join(usgs.ref, by =
"ResultMeasure.MeasureUnitCode.Upper") %>%
dplyr::select(-ResultMeasure.MeasureUnitCode.Upper) %>%
dplyr::distinct()
}

if (ref == "wqx") {
# Import USGS unit ref
usgs.ref <- TADA_GetUSGSSynonymRef()
usgs.ref$Target.Unit <- toupper(usgs.ref$Target.Unit)
usgs.ref$Code <- toupper(usgs.ref$Code)
usgs.ref$Target.Speciation <- toupper(usgs.ref$Target.Speciation)

# Import WQX unit ref
wqx.ref <- TADA_GetMeasureUnitRef()
wqx.ref$Target.Unit <- toupper(wqx.ref$Target.Unit)
wqx.ref$Code <- toupper(wqx.ref$Code)

# Combine for USGS and WQX unit ref
unit.ref <- wqx.ref %>%

wqx.ref <- wqx.ref %>%
dplyr::rename(
TADA.ResultMeasure.MeasureUnitCode = Code,
TADA.Target.ResultMeasure.MeasureUnitCode = Target.Unit,
TADA.WQXUnitConversionFactor = Conversion.Factor
)
dplyr::full_join(usgs.ref, by = c(
"TADA.ResultMeasure.MeasureUnitCode",
"TADA.Target.ResultMeasure.MeasureUnitCode",
"TADA.WQXUnitConversionFactor"
)) %>%
TADA.WQXUnitConversionFactor = Conversion.Factor,
TADA.WQXUnitConversionCoefficient = Conversion.Coefficient) %>%
dplyr::select(
TADA.ResultMeasure.MeasureUnitCode, TADA.Target.ResultMeasure.MeasureUnitCode,
TADA.WQXUnitConversionFactor, TADA.WQXUnitConversionCoefficient,
TADA.Target.MethodSpeciationName
)

# list of variables for joining unit ref with data
ref.join <- c("TADA.ResultMeasure.MeasureUnitCode")
TADA.WQXUnitConversionFactor, TADA.WQXUnitConversionCoefficient
) %>%
dplyr::distinct()

# create unit ref

unit.ref <- TADA_UniqueCharUnitSpeciation(.data)

unit.ref <- unit.ref %>%
dplyr::mutate(ResultMeasure.MeasureUnitCode.Upper = toupper(ResultMeasure.MeasureUnitCode)) %>%
dplyr::left_join(usgs.ref, by =
"ResultMeasure.MeasureUnitCode.Upper") %>%
dplyr::select(-ResultMeasure.MeasureUnitCode.Upper) %>%
dplyr::distinct()

unit.ref <- unit.ref %>%
dplyr::left_join(wqx.ref) %>%
dplyr::distinct()

print("TADA_ConvertResultUnits: TADA target units are assigned by default when no unit 'ref' is supplied as a function input.")
}
}
}}

# list of conversion columns

Expand All @@ -456,17 +469,22 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) {
"TADA.WQXUnitConversionFactor", "TADA.WQXUnitConversionCoefficient",
"TADA.Target.MethodSpeciationName", "TADA.Target.ResultMeasure.MeasureUnitCode"
)

# ref join

ref.join <- c("TADA.CharacteristicName", "TADA.MethodSpeciationName",
"ResultMeasure.MeasureUnitCode", "TADA.ResultMeasure.MeasureUnitCode")

# join unit.ref to .data
check.data <- .data %>%
# remove existing conversion columns
dplyr::select(-tidyselect::any_of(conversion.cols)) %>%
dplyr::select(-tidyselect::any_of(c(conversion.cols))) %>%
# add new conversion columns
dplyr::left_join(unit.ref,
by =
c(
ref.join
),
by =
c(
ref.join
),
relationship = "many-to-many"
)

Expand Down Expand Up @@ -494,6 +512,8 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) {
!is.na(TADA.Target.ResultMeasure.MeasureUnitCode) ~ ((TADA.ResultMeasureValue + TADA.WQXUnitConversionCoefficient) * TADA.WQXUnitConversionFactor),
is.na(TADA.Target.ResultMeasure.MeasureUnitCode) ~ TADA.ResultMeasureValue
))

rm(flag.data)

# populate ResultMeasure.MeasureUnitCode
clean.data <- clean.data %>%
Expand All @@ -504,33 +524,42 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) {
))

# Convert method speciation column for USGS data
check <- subset(clean.data, !is.na(clean.data$TADA.SpeciationUnitConversion) & !is.na(flag.data$TADA.MethodSpeciationName))
check <- clean.data %>%
dplyr::filter(toupper(ResultMeasure.MeasureUnitCode) %in% usgs.ref$ResultMeasure.MeasureUnitCode.Upper)

if (dim(check)[1] > 0) {
print(paste0("NOTE: Dataset contains ", dim(check)[1], " USGS results with speciation information in both the result unit and method speciation columns. This function overwrites the TADA method speciation column with the speciation provided in the result unit column."))
}

clean.data$TADA.MethodSpeciationName <- ifelse(!is.na(clean.data$TADA.MethodSpeciationName), toupper(clean.data$TADA.Target.MethodSpeciationName), clean.data$TADA.Target.MethodSpeciationName)

# add target method speciation name when needed
clean.data$TADA.MethodSpeciationName <- ifelse(!is.na(clean.data$TADA.Target.MethodSpeciationName), toupper(clean.data$TADA.Target.MethodSpeciationName), toupper(clean.data$TADA.MethodSpeciationName))
# replace UNKNOWN or NONE method speciation name with NA
clean.data$TADA.MethodSpeciationName <- ifelse(clean.data$TADA.MethodSpeciationName %in% c("UNKNOWN", "NONE"), NA, clean.data$TADA.MethodSpeciationName)

# create new comparable data identifier column following conversion
clean.data <- TADA_CreateComparableID(clean.data)

clean.data <- TADA_OrderCols(clean.data)

det.ref <- unit.ref %>%
dplyr::rename(
TADA.DetectionQuantitationLimitMeasure.MeasureUnitCode = TADA.ResultMeasure.MeasureUnitCode
)
dplyr::rename(DetectionQuantitationLimitMeasure.MeasureUnitCode = ResultMeasure.MeasureUnitCode)

det.join <- c("TADA.CharacteristicName",
"DetectionQuantitationLimitMeasure.MeasureUnitCode",
"TADA.MethodSpeciationName",
"TADA.ResultMeasure.MeasureUnitCode")

# Transform TADA.DetectionQuantitationLimitMeasure.MeasureValue value to Target Unit only if target unit exists
det.data <- clean.data %>%
merge(det.ref, all.x = TRUE) %>%
dplyr::select(-tidyselect::any_of(conversion.cols)) %>%
dplyr::left_join(det.ref, by = det.join) %>%
# apply conversions where there is a target unit, use original value if no target unit
dplyr::mutate(TADA.DetectionQuantitationLimitMeasure.MeasureValue = dplyr::case_when(
is.na(TADA.DetectionQuantitationLimitMeasure.MeasureValue) ~ TADA.DetectionQuantitationLimitMeasure.MeasureValue,
!is.na(TADA.Target.ResultMeasure.MeasureUnitCode) ~ ((TADA.DetectionQuantitationLimitMeasure.MeasureValue - TADA.WQXUnitConversionCoefficient) * TADA.WQXUnitConversionFactor),
is.na(TADA.Target.ResultMeasure.MeasureUnitCode) ~ TADA.DetectionQuantitationLimitMeasure.MeasureValue
))

rm(clean.data)

# populate TADA.DetectionQuantitationLimitMeasure.MeasureUnitCode
convert.data <- det.data %>%
Expand All @@ -540,18 +569,13 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) {
is.na(TADA.Target.ResultMeasure.MeasureUnitCode) ~ TADA.DetectionQuantitationLimitMeasure.MeasureUnitCode
)) %>%
TADA_OrderCols()

# Convert method speciation column for USGS data
convert.data$TADA.MethodSpeciationName <- ifelse(is.na(convert.data$TADA.MethodSpeciationName) & !is.na(convert.data$TADA.Target.MethodSpeciationName), toupper(convert.data$TADA.Target.MethodSpeciationName), convert.data$TADA.MethodSpeciationName)
convert.data$TADA.MethodSpeciationName <- ifelse(convert.data$TADA.MethodSpeciationName == "", NA, convert.data$TADA.MethodSpeciationName)


# Remove unneccessary conversion columns
convert.data <- convert.data %>%
dplyr::select(-tidyselect::any_of(conversion.cols))

return(convert.data)
}
}
}}

#' Convert Depth Units
#'
Expand Down
2 changes: 1 addition & 1 deletion R/Utilities.R
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ utils::globalVariables(c(
"TADA.ResultDepthHeightMeasure.MeasureUnitCode", "TADA.ResultDepthHeightMeasure.MeasureValue",
"YAxis.DepthUnit", "TADA.CharacteristicsForDepthProfile", "TADA.ConsolidatedDepth",
"TADA.ConsolidatedDepth.Bottom", "TADA.ConsolidatedDepth.Unit", "col2rgb",
"palette.colors", "rect", "rgb", "text"
"palette.colors", "rect", "rgb", "text", "CodeNoSpeciation", "ResultMeasure.MeasureUnitCode.Upper"
))

# global variables for tribal feature layers used in TADA_OverviewMap in Utilities.R
Expand Down
Binary file modified data/Data_6Tribes_5y.rda
Binary file not shown.
Binary file modified data/Data_6Tribes_5y_Harmonized.rda
Binary file not shown.
Binary file modified data/Data_NCTCShepherdstown_HUC12.rda
Binary file not shown.
Binary file modified data/Data_Nutrients_UT.rda
Binary file not shown.
Binary file modified data/Data_R5_TADAPackageDemo.rda
Binary file not shown.
Loading