--- title: "Exposure Duration Table" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Exposure Duration Table} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r} library(metalite) library(metalite.sl) ``` # Create Exposure Duration Table The exposure duration analysis aims to provide table to summarize by each identified duration category. The development of exposure duration analysis involves functions: - `meta_sl_exposure_example`: build the metadata (`meta` object) for analysis. - `prepare_exp_duration`: prepare analysis raw datasets. - `format_exp_duration`: prepare analysis outdata with proper format. - `rtf_exp_duration`: transfer (mock) output dataset to RTF table. ```{r, out.width = "100%", out.height = "400px", echo = FALSE, fig.align = "center"} knitr::include_graphics("pdf/exp0duration.pdf") ``` ## Build a metadata There are two steps in `meta_sl_exposure_example` function in order to build the metadata (`meta` object): processing the ADaM dataset and save meta information for A&R reporting. Step1: ADEXSUM, the ADaM dataset for Drug Exposrue Summary Data, is utilized to: - Sum up duration by STUDYID SITENUM USUBJID SUBJID APERIOD EXTRT ADOSEFRM PARAMCD. - Subset the exposure data by `upcase(trim(left(paramcd))) = "TRTDUR"`. - Get the exposure duration `adexsum$AVAL` for all participants. - Assign duration category `adexsum$EXDURGR` i.e.">=1 day", ">=7 days",">=28 days", ">=12 weeks" and ">=24 weeks". ```{r} adsl <- r2rtf::r2rtf_adsl adexsum <- data.frame(USUBJID = adsl$USUBJID) adexsum$TRTA <- factor(adsl$TRT01A, levels = c("Placebo", "Xanomeline Low Dose", "Xanomeline High Dose"), labels = c("Placebo", "Low Dose", "High Dose") ) adexsum$APERIODC <- "Base" adexsum$APERIOD <- 1 set.seed(123) # Set a seed for reproducibility adexsum$AVAL <- sample(x = 0:(24 * 7), size = length(adexsum$USUBJID), replace = TRUE) adexsum$EXDURGR <- "not treated" adexsum$EXDURGR[adexsum$AVAL >= 1] <- ">=1 day" adexsum$EXDURGR[adexsum$AVAL >= 7] <- ">=7 days" adexsum$EXDURGR[adexsum$AVAL >= 28] <- ">=28 days" adexsum$EXDURGR[adexsum$AVAL >= 12 * 7] <- ">=12 weeks" adexsum$EXDURGR[adexsum$AVAL >= 24 * 7] <- ">=24 weeks" adexsum$EXDURGR <- factor(adexsum$EXDURGR, levels = c("not treated", ">=1 day", ">=7 days", ">=28 days", ">=12 weeks", ">=24 weeks") ) unique(adexsum$EXDURGR) ``` Step2: Save analysis plan and metadata(parameter and analysis) information, then build meta object. ```{r} plan <- metalite::plan( analysis = "exp_dur", population = "apat", observation = "apat", parameter = "expdur" ) meta <- metalite::meta_adam( population = adexsum, observation = adexsum ) |> metalite::define_plan(plan) |> metalite::define_population( name = "apat", group = "TRTA", subset = quote(APERIOD == 1 & AVAL > 0) ) |> metalite::define_parameter( name = "expdur", var = "AVAL", label = "Exposure Duration (Days)", vargroup = "EXDURGR" ) |> metalite::define_analysis( name = "exp_dur", title = "Summary of Exposure Duration", label = "exposure duration table" ) |> metalite::meta_build() ``` ## Analysis preparation The input of the function `prepare_exp_duration()` is a `meta` object created by the metalite package. The resulting output comprises a collection of raw datasets for analysis and reporting. ```{r} outdata <- prepare_exp_duration(meta) outdata ``` Number of participants in population ```{r} outdata$n[, 1:5] ``` Number of participants in each duration category ```{r} charn <- data.frame(outdata$char_n[1]) head(charn[, 1:5], 6) ``` Proportion of participants in each duration category ```{r} charp <- data.frame(outdata$char_prop[1]) head(charp[, 1:5], 6) ``` Statistical summary of exposure duration for each treatment ```{r} chars <- data.frame(outdata$char_n[1]) tail(chars[, 1:5], 8) ``` ## Format output `format_exp_duration` to prepare analysis dataset before generate RTF output ```{r} tbl <- format_exp_duration(outdata, display_col = c("n", "prop", "total")) head(tbl$tbl) ``` ## Output as RTF `rtf_exp_duration` to generate RTF output ```{r, warning=FALSE} outdata <- format_exp_duration(outdata, display_col = c("n", "prop", "total")) |> rtf_exp_duration( source = "Source: [CDISCpilot: adam-adexsum]", path_outdata = tempfile(fileext = ".Rdata"), path_outtable = "outtable/exp0duration.rtf" ) ``` ```{r, out.width = "100%", out.height = "400px", echo = FALSE, fig.align = "center"} knitr::include_graphics("pdf/exp0duration.pdf") ```