From 92b05f0d483d8f813b3924a562b69e014c259e06 Mon Sep 17 00:00:00 2001 From: hsonne Date: Sat, 23 Feb 2019 10:29:13 +0100 Subject: [PATCH 1/2] Simplify assess_bathing_quality_eu() - swap sides of comparison: "mean > 15" intead of "15 < mean" - do not repeat "return(ordered(..., levels = levels)" --- R/assess_bathing_quality_eu.R | 40 ++++++++++++++--------------------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/R/assess_bathing_quality_eu.R b/R/assess_bathing_quality_eu.R index 96cb579..ace4795 100644 --- a/R/assess_bathing_quality_eu.R +++ b/R/assess_bathing_quality_eu.R @@ -16,43 +16,35 @@ assess_bathing_quality_eu <- function(e.coli, log = TRUE) e.coli <- stats::na.omit(e.coli) if (length(e.coli) < 16) { - warning("Less than 16 e.coli elements. EU directive does need 16 at least.") } - if (15 < mean(e.coli)) { - + if (mean(e.coli) > 15) { log <- FALSE } if (! log) { - e.coli <- log10(e.coli) } + # sd uses nominator n - 1 which leads to higher sigmas + sigma <- stats::sd(e.coli) mu <- mean(e.coli) - sigma <- stats::sd(e.coli) # sd uses nominator n-1 which leads to higher sigmas - q90 <- 1.282 * sigma + mu - q95 <- 1.65 * sigma + mu - - levels <- c("excellent", "good", "sufficient", "poor") - - if (q95 < log10(500)) { - - return(ordered("excellent", levels = levels)) - } - - if (q95 < log10(1000)) { - - return(ordered("good", levels = levels)) - } - - if (q90 < log10(900)) { - - return(ordered("sufficient", levels = levels)) + q95 <- 1.650 * sigma + mu + + qualities <- c("excellent", "good", "sufficient", "poor") + + index <- if (q95 < log10(500)) { + 1 + } else if (q95 < log10(1000)) { + 2 + } else if (q90 < log10(900)) { + 3 + } else { + 4 } - return(ordered("poor", levels = levels)) + factor(qualities[index], levels = qualities, ordered = TRUE) } From 478a4667d073ff2312fbdbd987759169d0c92423 Mon Sep 17 00:00:00 2001 From: wseis <31789484+wseis@users.noreply.github.com> Date: Thu, 28 Feb 2019 16:02:55 +0100 Subject: [PATCH 2/2] Update assess_bathing_quality_eu.R --- R/assess_bathing_quality_eu.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/assess_bathing_quality_eu.R b/R/assess_bathing_quality_eu.R index ace4795..460a50b 100644 --- a/R/assess_bathing_quality_eu.R +++ b/R/assess_bathing_quality_eu.R @@ -27,7 +27,7 @@ assess_bathing_quality_eu <- function(e.coli, log = TRUE) e.coli <- log10(e.coli) } - # sd uses nominator n - 1 which leads to higher sigmas + # sd uses nominator n - 1 which leads an unbiased estimate of the population distribution sigma <- stats::sd(e.coli) mu <- mean(e.coli) @@ -40,7 +40,7 @@ assess_bathing_quality_eu <- function(e.coli, log = TRUE) 1 } else if (q95 < log10(1000)) { 2 - } else if (q90 < log10(900)) { + } else if (q90 < log10(900) & q95 < log10(1000)) { 3 } else { 4