R/prep.R

Defines functions preprocess_validation correction_param_prep

preprocess_validation <- function(x, validation_col = VALIDATION_LEVEL, verbose = TRUE) {
  val_col <- rlang::enquo(validation_col)
  if (!is.character(dplyr::pull(x, !! val_col))) stop("validation_col must be a character string.")

  val.vec <- x %>%
    dplyr::select(!! val_col) %>%
    dplyr::distinct() %>%
    dplyr::pull()

  expected_val.vec <- c("Detected Not Quantified",
                        "Not Detected",
                        "Not Reported")

  unexpected_val.vec <- val.vec[!val.vec %in% expected_val.vec]
  if (length(unexpected_val.vec) > 0) stop(paste("preprocess_validation() does not know how to handle the following string(s):",
                                                 paste(unexpected_val.vec, collapse = ", ")))

  final.df <- x %>%
    dplyr::filter(!! val_col %in% c("Detected Not Quantified",
                                    "Not Detected"))

  n_dropped_rows.scalar <- nrow(x) - nrow(final.df)
  if (verbose == TRUE) print(paste("Dropping",
                                   n_dropped_rows.scalar,
                                   "values from the data frame representing 'Not Reported'."))

  return(final.df)

}


correction_param_prep <- function(x, param.string = "Hardness (As CaCO3)", label.string, ...) {

  group_var <- rlang::enquos(...)

  rename.vec = c("RESULT_UNIT", "LAB_ANL_METHOD_NAME")

  param.df <- x %>%
    dplyr::filter(CHEMICAL_NAME %in% param.string) %>%
    rename_at(rename.vec, .funs = list(~ paste(label.string, ., sep = "_"))) %>%
    dplyr::rename(!!rlang::sym(label.string) := RESULT_NUMERIC) %>%
    dplyr::select(!!! group_var,
                  !!rlang::sym(label.string),
                  dplyr::contains(paste0(label.string, "_"))) %>%
    dplyr::distinct()

  final.df <- dplyr::left_join(x, param.df,
                               by = c(rlang::set_names(sapply(group_var, quo_name))))
  return(final.df)
}
BWAM/wqs documentation built on March 24, 2020, 5:26 p.m.