From a4481593fde1c5c6a241c5a260fef92fd9ff27fd Mon Sep 17 00:00:00 2001 From: pvictor Date: Wed, 27 Feb 2019 11:39:05 +0100 Subject: [PATCH] quantiles margin down --- DESCRIPTION | 2 +- R/margins_quantiles.R | 26 ++++++++++++++++++-------- inst/markdown/report/index.Rmd | 4 ++-- man/margins_quantiles.Rd | 5 ++++- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 6ac0518..fa9e78d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: antaresWeeklyMargin Title: Setup an 'Antares' Study for Weekly Margin Simulation -Version: 0.0.2.970 +Version: 0.0.2.980 Authors@R: c( person("Victor", "Perrier", email = "victor.perrier@dreamRs.fr", role = c("aut", "cre")), person("Fabiola", "Aravena-Rojas", email = "fabiola.aravena-rojas@rte-france.com", role = c("aut")), diff --git a/R/margins_quantiles.R b/R/margins_quantiles.R index 88797dd..1a8f142 100644 --- a/R/margins_quantiles.R +++ b/R/margins_quantiles.R @@ -4,6 +4,7 @@ #' #' @param margin a \code{data.table} containing margins. #' @param hours Couple of hours. +#' @param type Type of margin. #' #' @return a \code{data.table} #' @export @@ -17,8 +18,8 @@ #' #' @importFrom data.table copy melt %chin% := #' @importFrom stats median quantile -margins_quantiles <- function(margin, hours = c("09h", "19h")) { - +margins_quantiles <- function(margin, hours = c("09h", "19h"), type = c("upward", "downward")) { + type <- match.arg(type) margin <- copy(margin) margin[, jour := format(datetime, format = "%A")] margin[, date := format(datetime, format = "%Y-%m-%d")] @@ -30,12 +31,21 @@ margins_quantiles <- function(margin, hours = c("09h", "19h")) { id.vars = c("datetime", "date", "jour", "heure"), measure.vars = setdiff(names(margin), c("datetime", "date", "jour", "heure")) ) - margin <- margin[, list( - mediane = median(value), - q1 = quantile(value, probs = 1/100), - q4 = quantile(value, probs = 4/100), - q10 = quantile(value, probs = 10/100) - ), by = list(date, jour, heure)] + if (type == "upward") { + margin <- margin[, list( + mediane = median(value), + q1 = quantile(value, probs = 1/100), + q4 = quantile(value, probs = 4/100), + q10 = quantile(value, probs = 10/100) + ), by = list(date, jour, heure)] + } else { + margin <- margin[, list( + mediane = median(value), + q1 = quantile(value, probs = 99/100), + q4 = quantile(value, probs = 96/100), + q10 = quantile(value, probs = 90/100) + ), by = list(date, jour, heure)] + } melt( data = margin, id.vars = c("jour", "date", "heure"), diff --git a/inst/markdown/report/index.Rmd b/inst/markdown/report/index.Rmd index e4b9a80..d990af8 100644 --- a/inst/markdown/report/index.Rmd +++ b/inst/markdown/report/index.Rmd @@ -213,7 +213,7 @@ Legend: Table of quantiles : ```{r down-quantiles-solo, echo=FALSE} -marg <- margins_quantiles(marges_down$margin_area_solo, hours = c("04h", "16h")) +marg <- margins_quantiles(marges_down$margin_area_solo, hours = c("04h", "16h"), type = "downward") ft_margins_quantiles(marg, layout = "horizontal", language = "en") ``` @@ -243,7 +243,7 @@ Legend: Table of quantiles : ```{r down-quantiles-inter, echo=FALSE} -marg_i <- margins_quantiles(marges_down$margin_area_inter, hours = c("04h", "16h")) +marg_i <- margins_quantiles(marges_down$margin_area_inter, hours = c("04h", "16h"), type = "downward") ft_margins_quantiles(marg_i, layout = "horizontal", language = "en") ``` diff --git a/man/margins_quantiles.Rd b/man/margins_quantiles.Rd index 0aca75e..ef4c294 100644 --- a/man/margins_quantiles.Rd +++ b/man/margins_quantiles.Rd @@ -4,12 +4,15 @@ \alias{margins_quantiles} \title{Compute margins quantiles for a couple of hours} \usage{ -margins_quantiles(margin, hours = c("09h", "19h")) +margins_quantiles(margin, hours = c("09h", "19h"), type = c("upward", + "downward")) } \arguments{ \item{margin}{a \code{data.table} containing margins.} \item{hours}{Couple of hours.} + +\item{type}{Type of margin.} } \value{ a \code{data.table}