diff --git a/R/prepare_boxly.R b/R/prepare_boxly.R index 1b7134d..b9858a8 100644 --- a/R/prepare_boxly.R +++ b/R/prepare_boxly.R @@ -51,7 +51,8 @@ prepare_boxly <- function(meta, observation = NULL, analysis = NULL, filter_var = "PARAM", - hover_var_outlier = c("USUBJID", metalite::collect_adam_mapping(meta, analysis)$y)) { + hover_var_outlier = c("USUBJID", metalite::collect_adam_mapping(meta, analysis)$y), + mean_decimal = NULL) { if (is.null(population)) { if (length(meta$population) == 1) { population <- meta$population[[1]]$name @@ -179,7 +180,11 @@ prepare_boxly <- function(meta, ans$min <- vals[1] ans$q1 <- vals[2] ans$median <- vals[3] - ans$mean <- mean_val + if (!is.null(mean_decimal)) { + ans$mean <- round(mean_val, mean_decimal) + } else { + ans$mean <- mean_val + } ans$q3 <- vals[4] ans$max <- vals[5] diff --git a/vignettes/boxly.Rmd b/vignettes/boxly.Rmd index 50c6d9b..6856e68 100644 --- a/vignettes/boxly.Rmd +++ b/vignettes/boxly.Rmd @@ -101,3 +101,59 @@ meta_boxly( prepare_boxly() |> boxly() ``` + + +## Example 4: Format Mean Values in Summary Statistics + +### Overview + +When displaying summary statistics in the interactive box plot hover labels, you may want to control +the precision (number of decimal places) of the mean value. The `mean_decimal` parameter in +`prepare_boxly()` allows you to format the mean values to a specific number of decimal places. + +This is particularly useful when you need to: + +- Match a specific reporting format required by your analysis plan or regulatory submission +- Improve readability by reducing unnecessary decimal places +- Ensure consistency with other statistics displayed in your report +- Control the level of precision shown to stakeholders + +### Basic Usage + +Use the `mean_decimal` parameter to specify the number of decimal places for rounding the mean value: + +```{r} +meta <- meta_boxly( + boxly_adsl, + boxly_adlb, + population_term = "apat", + observation_term = "wk12", + observation_subset = AVISITN <= 12 & !is.na(CHG) +) + +# Format mean values to 2 decimal places +outdata <- prepare_boxly(meta, mean_decimal = 2) +boxly(outdata) +``` + +### Example with Different Decimal Places + +```{r} +# Format mean values to 1 decimal place +meta_boxly( + boxly_adsl, + boxly_adlb, + population_term = "apat", + observation_term = "wk12", + observation_subset = AVISITN <= 12 & !is.na(CHG) +) |> + prepare_boxly(mean_decimal = 1) |> + boxly() +``` + +### Notes + +- When `mean_decimal` is `NULL` (default), the mean values are displayed with full precision (not rounded) +- The mean values are rounded using base R's `round()` function +- Other summary statistics (Min, Q1, Median, Q3, Max) are not affected by this parameter +- The formatted mean values will appear in the hover label when you move your cursor over the box plot diff --git a/vignettes/testing-format-statistics.Rmd b/vignettes/testing-format-statistics.Rmd new file mode 100644 index 0000000..5e7762f --- /dev/null +++ b/vignettes/testing-format-statistics.Rmd @@ -0,0 +1,37 @@ +--- +title: "Untitled" +author: "Jeetender Singh Chauhan" +date: "`r Sys.Date()`" +output: html_document +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = TRUE) +``` + + + +```{r , echo=FALSE} +library(metalite) +library(boxly) + +# Step 1: Source your modified prepare_boxly.R file +# (Update the path to where your modified file is saved) +source("~/boxly_format_mean_value/R/prepare_boxly.R") + +# Step 2: Create metadata +meta <- meta_boxly( + boxly_adsl, + boxly_adlb, + population_term = "apat", + observation_term = "wk12" +) + +# Step 3: Prepare data with 2 decimal places for mean +outdata <- prepare_boxly(meta, mean_decimal = 5) + +# Step 4: Generate the interactive box plot +boxly(outdata) +``` + +Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.