diff --git a/R/UnitConversions.R b/R/UnitConversions.R index 4e539bdff..fb85b9376 100644 --- a/R/UnitConversions.R +++ b/R/UnitConversions.R @@ -345,7 +345,6 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) { # import USGS ref for method speciation usgs.ref <- TADA_GetUSGSSynonymRef() %>% - # dplyr::select(Code, Target.Speciation, Conversion.Factor) %>% dplyr::rename( ResultMeasure.MeasureUnitCode = Code, TADA.Target.MethodSpeciationName = Target.Speciation, @@ -356,7 +355,7 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) { 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 @@ -516,6 +515,8 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) { print("TADA_ConvertResultUnits: When Transform = FALSE, result values and units are NOT converted. Conversions are required for many other TADA functions to work properly (such as result value range checks).") # reorder columns clean.data <- TADA_OrderCols(flag.data) + + return(clean.data) } if (transform == TRUE) { @@ -578,8 +579,25 @@ TADA_ConvertResultUnits <- function(.data, ref = "tada", transform = TRUE) { rm(clean.data) + # modify det ref to remove speciation from USGS detection limit unit codes + det.ref <- det.ref %>% + dplyr::ungroup() %>% + dplyr::select( + TADA.CharacteristicName, + DetectionQuantitationLimitMeasure.MeasureUnitCode, + TADA.Target.ResultMeasure.MeasureUnitCode + ) %>% + dplyr::distinct() + + det.join <- c("TADA.CharacteristicName", + "DetectionQuantitationLimitMeasure.MeasureUnitCode") + # populate TADA.DetectionQuantitationLimitMeasure.MeasureUnitCode convert.data <- det.data %>% + # remove conversion columns + dplyr::select(-tidyselect::any_of(conversion.cols)) %>% + # join ref to convert detection limit unit code to convert to target unit + dplyr::left_join(det.ref, by = det.join) %>% # use target unit where there is a target unit, use original unit if no target unit dplyr::mutate(TADA.DetectionQuantitationLimitMeasure.MeasureUnitCode = dplyr::case_when( !is.na(TADA.Target.ResultMeasure.MeasureUnitCode) ~ TADA.Target.ResultMeasure.MeasureUnitCode, diff --git a/R/Utilities.R b/R/Utilities.R index ff1076969..b394018fd 100644 --- a/R/Utilities.R +++ b/R/Utilities.R @@ -261,6 +261,8 @@ TADA_AutoClean <- function(.data) { # Transform "Dissolved oxygen (DO)" characteristic name to "DISSOLVED OXYGEN SATURATION" IF # result unit is "%" or "% SATURATN". + + if(any(.data$CharacteristicName == "Dissolved oxygen (DO)")) { print("TADA_Autoclean: harmonizing dissolved oxygen characterisic name to DISSOLVED OXYGEN SATURATION if unit is % or % SATURATN.") @@ -287,6 +289,7 @@ TADA_AutoClean <- function(.data) { dplyr::arrange(ResultIdentifier) rm(do.units, do.list, do.data, other.data, do.full.join) + } # Remove complex biological data. Un-comment after new WQX 3.0 Profiles are released. May not be needed if implemented via WQP UI/services. # .data$TADA.BiologicalIntentName = toupper(.data$BiologicalIntentName) @@ -1434,6 +1437,8 @@ TADA_addPoints <- function(map, layerfilepath, layergroup, layername, bbox = NUL #' #' @examples #' UniqueCharUnitSpecExample <- TADA_UniqueCharUnitSpeciation(Data_NCTCShepherdstown_HUC12) +#' + TADA_UniqueCharUnitSpeciation <- function(.data) { required_cols <- c( "TADA.CharacteristicName", "TADA.ResultSampleFractionText", diff --git a/man/TADA_UniqueCharUnitSpeciation.Rd b/man/TADA_UniqueCharUnitSpeciation.Rd index d3a9b4d5e..136fdce7a 100644 --- a/man/TADA_UniqueCharUnitSpeciation.Rd +++ b/man/TADA_UniqueCharUnitSpeciation.Rd @@ -21,4 +21,5 @@ TADA.MethodSpeciationName in a TADA data frame. } \examples{ UniqueCharUnitSpecExample <- TADA_UniqueCharUnitSpeciation(Data_NCTCShepherdstown_HUC12) + }