TL Catalog
  1. Tables
  2. Exposure
  3. TSIEX02
  • Introduction

  • Index

  • Tables
    • Adverse Events
      • TSFAE01A
      • TSFAE01B
      • TSFAE02
      • TSFAE02A
      • TSFAE03
      • TSFAE03A
      • TSFAE04
      • TSFAE04A
      • TSFAE05
      • TSFAE05A
      • TSFAE06A
      • TSFAE06B
      • TSFAE07A
      • TSFAE07B
      • TSFAE08
      • TSFAE09
      • TSFAE10
      • TSFAE11
      • TSFAE12
      • TSFAE13
      • TSFAE14
      • TSFAE15
      • TSFAE16
      • TSFAE17A
      • TSFAE17B
      • TSFAE17C
      • TSFAE17D
      • TSFAE19A
      • TSFAE19B
      • TSFAE19C
      • TSFAE19D
      • TSFAE20A
      • TSFAE20B
      • TSFAE20C
      • TSFAE21A
      • TSFAE21B
      • TSFAE21C
      • TSFAE21D
      • TSFAE22A
      • TSFAE22B
      • TSFAE22C
      • TSFAE23A
      • TSFAE23B
      • TSFAE23C
      • TSFAE23D
      • TSFAE24A
      • TSFAE24B
      • TSFAE24C
      • TSFAE24D
      • TSFAE24F
      • TSFDTH01
    • Clinical Laboratory Evaluation
      • TSFLAB01
      • TSFLAB01A
      • TSFLAB02
      • TSFLAB02A
      • TSFLAB02B
      • TSFLAB03
      • TSFLAB03A
      • TSFLAB04A
      • TSFLAB04B
      • TSFLAB05
      • TSFLAB06
      • TSFLAB07
    • Demographic
      • TSIDEM01
      • TSIDEM02
      • TSIMH01
    • Disposition of Subjects
      • TSIDS01
      • TSIDS02
      • TSIDS02A
    • Electrocardiograms
      • TSFECG01
      • TSFECG01A
      • TSFECG02
      • TSFECG03
      • TSFECG04
      • TSFECG05
    • Exposure
      • TSIEX01
      • TSIEX02
      • TSIEX03
      • TSIEX04
      • TSIEX06
      • TSIEX07
      • TSIEX08
      • TSIEX09
      • TSIEX10
      • TSIEX11
    • Pharmacokinetics
      • TPK01A
      • TPK01B
      • TPK02
      • TPK03
    • Prior and Concomitant Therapies
      • TSICM01
      • TSICM02
      • TSICM03
      • TSICM04
      • TSICM05
      • TSICM06
      • TSICM07
      • TSICM08
    • Vital Signs and Physical Findings
      • TSFVIT01
      • TSFVIT01A
      • TSFVIT02
      • TSFVIT03
      • TSFVIT04
      • TSFVIT05
      • TSFVIT06
  • Listings
    • Adverse Events
      • LSFAE01
      • LSFAE02
      • LSFAE03
      • LSFAE04
      • LSFAE05
      • LSFAE06A
      • LSFAE06B
      • LSFDTH01
    • Clinical Laboratory Evaluation
      • LSFLAB01
    • Demographic
      • LSIDEM01
      • LSIDEM02
      • LSIMH01
    • Disposition of Subjects
      • LSIDS01
      • LSIDS02
      • LSIDS03
      • LSIDS04
      • LSIDS05
    • Electrocardiograms
      • LSFECG01
      • LSFECG02
    • Exposure
      • LSIEX01
      • LSIEX02
      • LSIEX03
    • Prior and Concomitant Therapies
      • LSICM01
    • Vital Signs and Physical Findings
      • LSFVIT01
      • LSFVIT02

  • Reproducibility

  • Changelog

On this page

  • Output
  • Edit this page
  • Report an issue
  1. Tables
  2. Exposure
  3. TSIEX02

TSIEX02

Study Treatment Administration


Output

  • Preview
Code
# Program Name:              tsiex02.R

# Prep Environment

library(envsetup)
library(tern)
library(dplyr)
library(rtables)
library(junco)

# Define script level parameters:

# - Define output ID and file location

tblid <- "TSIEX02"
fileid <- tblid
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map


trtvar <- "TRT01A"
popfl <- "SAFFL"

catlevels <- c("20 mg", "30 mg", "40 mg")

combined_colspan_trt <- TRUE

if (combined_colspan_trt == TRUE) {
  # Set up levels and label for the required combined columns
  add_combo <- add_combo_facet(
    "Combined",
    label = "Combined",
    levels = c("Xanomeline High Dose", "Xanomeline Low Dose")
  )

  # choose if any facets need to be removed - e.g remove the combined column for placebo
  rm_combo_from_placebo <- cond_rm_facets(
    facets = "Combined",
    ancestor_pos = NA,
    value = " ",
    split = "colspan_trt"
  )

  mysplit <- make_split_fun(post = list(add_combo, rm_combo_from_placebo))
}

# Process Data:

# Read in required data
adsl <- pharmaverseadamjnj::adsl %>%
  filter(!!rlang::sym(popfl) == "Y") %>%
  select(USUBJID, all_of(trtvar), all_of(popfl))

# If AVISIT is not present in ADEXSUM than create 'Overall' as the Visit, which is used
# for the filtering AVISIT records if it does exist
adexsum <- pharmaverseadamjnj::adexsum %>%
  mutate(VISIT = if (exists("AVISIT")) AVISIT else "Overall") %>%
  filter(
    PARAMCD %in%
      c("DOSEDAYS", "CUMDOSE", "MEANDDI", "MEANDD", "MODEDD", "FINDD") &
      !is.na(AVAL) &
      VISIT == "Overall"
  ) %>%
  mutate(
    AVAL1 = case_when(PARAMCD == "DOSEDAYS" ~ AVAL),
    AVAL2 = case_when(PARAMCD == "CUMDOSE" ~ AVAL),
    AVAL3 = case_when(PARAMCD == "MEANDDI" ~ AVAL),
    AVAL4 = case_when(PARAMCD == "MEANDD" ~ AVAL),
    AVAL5 = case_when(PARAMCD == "MODEDD" ~ AVAL),
    AVALCAT5 = case_when(PARAMCD == "MODEDD" ~ AVALCAT1),
    AVAL6 = case_when(PARAMCD == "FINDD" ~ AVAL),
    AVALCAT6 = case_when(PARAMCD == "FINDD" ~ AVALCAT1)
  ) %>%
  select(
    STUDYID,
    USUBJID,
    PARAMCD,
    AVAL1,
    AVAL2,
    AVAL3,
    AVAL4,
    AVAL5,
    AVAL6,
    AVALCAT5,
    AVALCAT6
  )

adsl$colspan_trt <- factor(
  ifelse(adsl[[trtvar]] == "Placebo", " ", "Active Study Agent"),
  levels = c("Active Study Agent", " ")
)

# join data together
ex <- adexsum %>% inner_join(., adsl, by = c("USUBJID"))

# Drop unwanted levels for AVALCAT5 and AVALCAT6 and set levels defined in top section of script

ex$AVALCAT5 <- droplevels(ex$AVALCAT5)
ex$AVALCAT5 <- factor(ex$AVALCAT5, levels = catlevels)
ex$AVALCAT6 <- droplevels(ex$AVALCAT6)
ex$AVALCAT6 <- factor(ex$AVALCAT6, levels = catlevels)

colspan_trt_map <- create_colspan_map(
  adsl,
  non_active_grp = "Placebo",
  non_active_grp_span_lbl = " ",
  active_grp_span_lbl = "Active Study Agent",
  colspan_var = "colspan_trt",
  trt_var = trtvar
)

# Define layout and build table:

extra_args1 <- list(
  .stats = "count_unique_fraction",
  denom = "n_df"
)


lyt <- rtables::basic_table(
  top_level_section_div = " ",
  show_colcounts = TRUE,
  colcount_format = "N=xx"
) %>%
  split_cols_by(
    "colspan_trt",
    split_fun = trim_levels_to_map(map = colspan_trt_map)
  )

if (combined_colspan_trt == TRUE) {
  lyt <- lyt %>%
    split_cols_by(trtvar, split_fun = mysplit)
} else {
  lyt <- lyt %>%
    split_cols_by(trtvar)
}

lyt <- lyt %>%
  analyze(
    "AVAL1",
    table_names = "AVAL1x",
    var_labels = "Total dosing days of treatment (excluding days off treatment)~[super a]",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL1",
    nested = TRUE,
    var_labels = "Total dosing days of treatment (excluding days off treatment)~[super a]",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.x (xx.xx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.x")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx., xx.")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.x, xx.x")
        )
      )
    }
  ) %>%
  analyze(
    "AVAL2",
    table_names = "AVAL2x",
    nested = FALSE,
    var_labels = "Cumulative dose ([unit])",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL2",
    nested = TRUE,
    var_labels = "Cumulative dose ([unit])",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.x (xx.xx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.x")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx., xx.")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.x, xx.x")
        )
      )
    }
  ) %>%
  analyze(
    "AVAL3",
    table_names = "AVAL3x",
    nested = FALSE,
    var_labels = "Average daily dose ([unit/day]) (including days off treatment)",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL3",
    nested = TRUE,
    var_labels = "Average daily dose ([unit/day]) (including days off treatment)",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.xx (xx.xxx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.xx")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx.x, xx.x")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.xx, xx.xx")
        )
      )
    }
  ) %>%
  analyze(
    "AVAL4",
    table_names = "AVAL4x",
    nested = FALSE,
    var_labels = "Average daily dose ([unit/day]) (excluding days off treatment)",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL4",
    nested = TRUE,
    var_labels = "Average daily dose ([unit/day]) (excluding days off treatment)",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.xx (xx.xxx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.xx")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx.x, xx.x")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.xx, xx.xx")
        )
      )
    }
  ) %>%
  analyze(
    "AVAL5",
    nested = FALSE,
    var_labels = "Modal daily dose ([unit/day]), n (%)",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVALCAT5",
    afun = a_freq_j,
    extra_args = extra_args1,
    show_labels = "hidden",
    indent_mod = 2L
  ) %>%
  analyze(
    "AVAL6",
    table_names = "AVAL6x",
    nested = FALSE,
    var_labels = "Final daily dose ([unit/day])",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL6",
    nested = TRUE,
    var_labels = "Final daily dose ([unit/day])",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.x (xx.xx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.x")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx., xx.")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.x, xx.x")
        )
      )
    }
  ) %>%
  analyze(
    "AVALCAT6",
    afun = a_freq_j,
    nested = FALSE,
    show_labels = "visible",
    var_labels = "Final daily dose ([unit/day]), n (%)",
    extra_args = extra_args1,
    indent_mod = 1L
  ) %>%
  append_topleft("Parameter")

result <- build_table(lyt, ex, alt_counts_df = adsl)

# Add titles and footnotes:

result <- set_titles(result, tab_titles)

# Convert to tbl file and output table

tt_to_tlgrtf(string_map = string_map, tt = result, file = fileid, orientation = "portrait")

TSIEX02: Study Treatment Administration; Safety Analysis Set (Study jjcs - core)

Active Study Agent

Xanomeline High Dose

Xanomeline Low Dose

Combined

Placebo

Parameter

N=53

N=73

N=126

N=59

Total dosing days of treatment
 (excluding days off
 treatment)a

N

53

73

126

59

Mean (SD)

99.0 (57.97)

106.7 (56.44)

103.4 (56.98)

93.8 (59.12)

Median

97.0

103.0

102.5

76.0

Min, max

1, 197

6, 198

1, 198

7, 200

Interquartile range

48.0, 142.0

60.0, 159.0

55.0, 154.0

51.0, 151.0

Cumulative dose ([unit])

N

53

73

126

59

Mean (SD)

2799.3 (1430.11)

2558.4 (1472.53)

2659.7 (1453.97)

2520.5 (1474.47)

Median

3301.0

2465.0

2884.5

2660.0

Min, max

298, 4927

102, 4978

102, 4978

187, 4963

Interquartile range

1561.0, 3984.0

1177.0, 3859.0

1326.0, 3914.0

1118.0, 4098.0

Average daily dose ([unit/day])
 (including days off treatment)

N

53

73

126

59

Mean (SD)

24.57 (11.958)

24.36 (9.463)

24.45 (10.539)

27.44 (10.456)

Median

23.20

23.60

23.40

28.20

Min, max

5.2, 44.9

5.1, 44.2

5.1, 44.9

6.7, 44.5

Interquartile range

13.80, 35.90

17.40, 30.20

16.20, 32.70

19.50, 35.90

Average daily dose ([unit/day])
 (excluding days off
 treatment)

N

53

73

126

59

Mean (SD)

27.43 (12.232)

30.60 (12.574)

29.27 (12.482)

23.88 (12.279)

Median

25.70

30.30

28.10

21.90

Min, max

6.2, 49.6

5.0, 50.0

5.0, 50.0

6.3, 49.9

Interquartile range

18.20, 39.00

20.40, 41.80

19.30, 39.40

12.80, 34.10

Modal daily dose ([unit/day]), n
 (%)

N

53

73

126

59

20 mg

18 (34.0%)

19 (26.0%)

37 (29.4%)

17 (28.8%)

30 mg

11 (20.8%)

15 (20.5%)

26 (20.6%)

14 (23.7%)

40 mg

24 (45.3%)

39 (53.4%)

63 (50.0%)

28 (47.5%)

Final daily dose ([unit/day])

N

53

73

126

59

Mean (SD)

32.6 (10.50)

29.1 (10.55)

30.6 (10.63)

28.5 (12.33)

Median

34.0

27.0

31.0

27.0

Min, max

11, 49

12, 49

11, 49

10, 49

Interquartile range

25.0, 40.0

21.0, 37.0

22.0, 38.0

17.0, 40.0

Final daily dose ([unit/day]), n
 (%)

20 mg

8 (15.1%)

18 (24.7%)

26 (20.6%)

20 (33.9%)

30 mg

14 (26.4%)

22 (30.1%)

36 (28.6%)

13 (22.0%)

40 mg

31 (58.5%)

33 (45.2%)

64 (50.8%)

26 (44.1%)

a Total dosing days of treatment is defined as the total number of days study treatment received – number of days off study treatment.

Download RTF file

TSIEX01
TSIEX03
Source Code
---
title: TSIEX02
subtitle: Study Treatment Administration
---

------------------------------------------------------------------------

{{< include ../../_utils/envir_hook.qmd >}}

```{r setup, echo = FALSE, warning = FALSE, message = FALSE}
options(docx.add_datetime = FALSE, tidytlg.add_datetime = FALSE)
envsetup_config_name <- "default"

# Path to the combined config file
envsetup_file_path <- file.path("../..", "envsetup.yml")

Sys.setenv(ENVSETUP_ENVIRON = '')
library(envsetup)
loaded_config <- config::get(config = envsetup_config_name, file = envsetup_file_path)
envsetup::rprofile(loaded_config)


dpscomp <- compound
dpspdr <- paste(protocol,dbrelease,rpteff,sep="__")

aptcomp <- compound
aptpdr <- paste(protocol,dbrelease,rpteff,sep="__")

###### Study specific updates (formerly in envre)

dpscomp <- "standards"
dpspdr <- "jjcs__NULL__jjcs - core"

apt <- FALSE
library(junco)
default_str_map <- rbind(default_str_map, c("&ctcae", "5.0"))

```

## Output

:::: panel-tabset
## {{< fa regular file-lines sm fw >}} Preview

```{r variant1, results='hide', warning = FALSE, message = FALSE}

# Program Name:              tsiex02.R

# Prep Environment

library(envsetup)
library(tern)
library(dplyr)
library(rtables)
library(junco)

# Define script level parameters:

# - Define output ID and file location

tblid <- "TSIEX02"
fileid <- tblid
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map


trtvar <- "TRT01A"
popfl <- "SAFFL"

catlevels <- c("20 mg", "30 mg", "40 mg")

combined_colspan_trt <- TRUE

if (combined_colspan_trt == TRUE) {
  # Set up levels and label for the required combined columns
  add_combo <- add_combo_facet(
    "Combined",
    label = "Combined",
    levels = c("Xanomeline High Dose", "Xanomeline Low Dose")
  )

  # choose if any facets need to be removed - e.g remove the combined column for placebo
  rm_combo_from_placebo <- cond_rm_facets(
    facets = "Combined",
    ancestor_pos = NA,
    value = " ",
    split = "colspan_trt"
  )

  mysplit <- make_split_fun(post = list(add_combo, rm_combo_from_placebo))
}

# Process Data:

# Read in required data
adsl <- pharmaverseadamjnj::adsl %>%
  filter(!!rlang::sym(popfl) == "Y") %>%
  select(USUBJID, all_of(trtvar), all_of(popfl))

# If AVISIT is not present in ADEXSUM than create 'Overall' as the Visit, which is used
# for the filtering AVISIT records if it does exist
adexsum <- pharmaverseadamjnj::adexsum %>%
  mutate(VISIT = if (exists("AVISIT")) AVISIT else "Overall") %>%
  filter(
    PARAMCD %in%
      c("DOSEDAYS", "CUMDOSE", "MEANDDI", "MEANDD", "MODEDD", "FINDD") &
      !is.na(AVAL) &
      VISIT == "Overall"
  ) %>%
  mutate(
    AVAL1 = case_when(PARAMCD == "DOSEDAYS" ~ AVAL),
    AVAL2 = case_when(PARAMCD == "CUMDOSE" ~ AVAL),
    AVAL3 = case_when(PARAMCD == "MEANDDI" ~ AVAL),
    AVAL4 = case_when(PARAMCD == "MEANDD" ~ AVAL),
    AVAL5 = case_when(PARAMCD == "MODEDD" ~ AVAL),
    AVALCAT5 = case_when(PARAMCD == "MODEDD" ~ AVALCAT1),
    AVAL6 = case_when(PARAMCD == "FINDD" ~ AVAL),
    AVALCAT6 = case_when(PARAMCD == "FINDD" ~ AVALCAT1)
  ) %>%
  select(
    STUDYID,
    USUBJID,
    PARAMCD,
    AVAL1,
    AVAL2,
    AVAL3,
    AVAL4,
    AVAL5,
    AVAL6,
    AVALCAT5,
    AVALCAT6
  )

adsl$colspan_trt <- factor(
  ifelse(adsl[[trtvar]] == "Placebo", " ", "Active Study Agent"),
  levels = c("Active Study Agent", " ")
)

# join data together
ex <- adexsum %>% inner_join(., adsl, by = c("USUBJID"))

# Drop unwanted levels for AVALCAT5 and AVALCAT6 and set levels defined in top section of script

ex$AVALCAT5 <- droplevels(ex$AVALCAT5)
ex$AVALCAT5 <- factor(ex$AVALCAT5, levels = catlevels)
ex$AVALCAT6 <- droplevels(ex$AVALCAT6)
ex$AVALCAT6 <- factor(ex$AVALCAT6, levels = catlevels)

colspan_trt_map <- create_colspan_map(
  adsl,
  non_active_grp = "Placebo",
  non_active_grp_span_lbl = " ",
  active_grp_span_lbl = "Active Study Agent",
  colspan_var = "colspan_trt",
  trt_var = trtvar
)

# Define layout and build table:

extra_args1 <- list(
  .stats = "count_unique_fraction",
  denom = "n_df"
)


lyt <- rtables::basic_table(
  top_level_section_div = " ",
  show_colcounts = TRUE,
  colcount_format = "N=xx"
) %>%
  split_cols_by(
    "colspan_trt",
    split_fun = trim_levels_to_map(map = colspan_trt_map)
  )

if (combined_colspan_trt == TRUE) {
  lyt <- lyt %>%
    split_cols_by(trtvar, split_fun = mysplit)
} else {
  lyt <- lyt %>%
    split_cols_by(trtvar)
}

lyt <- lyt %>%
  analyze(
    "AVAL1",
    table_names = "AVAL1x",
    var_labels = "Total dosing days of treatment (excluding days off treatment)~[super a]",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL1",
    nested = TRUE,
    var_labels = "Total dosing days of treatment (excluding days off treatment)~[super a]",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.x (xx.xx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.x")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx., xx.")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.x, xx.x")
        )
      )
    }
  ) %>%
  analyze(
    "AVAL2",
    table_names = "AVAL2x",
    nested = FALSE,
    var_labels = "Cumulative dose ([unit])",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL2",
    nested = TRUE,
    var_labels = "Cumulative dose ([unit])",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.x (xx.xx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.x")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx., xx.")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.x, xx.x")
        )
      )
    }
  ) %>%
  analyze(
    "AVAL3",
    table_names = "AVAL3x",
    nested = FALSE,
    var_labels = "Average daily dose ([unit/day]) (including days off treatment)",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL3",
    nested = TRUE,
    var_labels = "Average daily dose ([unit/day]) (including days off treatment)",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.xx (xx.xxx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.xx")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx.x, xx.x")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.xx, xx.xx")
        )
      )
    }
  ) %>%
  analyze(
    "AVAL4",
    table_names = "AVAL4x",
    nested = FALSE,
    var_labels = "Average daily dose ([unit/day]) (excluding days off treatment)",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL4",
    nested = TRUE,
    var_labels = "Average daily dose ([unit/day]) (excluding days off treatment)",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.xx (xx.xxx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.xx")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx.x, xx.x")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.xx, xx.xx")
        )
      )
    }
  ) %>%
  analyze(
    "AVAL5",
    nested = FALSE,
    var_labels = "Modal daily dose ([unit/day]), n (%)",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVALCAT5",
    afun = a_freq_j,
    extra_args = extra_args1,
    show_labels = "hidden",
    indent_mod = 2L
  ) %>%
  analyze(
    "AVAL6",
    table_names = "AVAL6x",
    nested = FALSE,
    var_labels = "Final daily dose ([unit/day])",
    show_labels = "visible",
    indent_mod = 0L,
    afun = function(x) {
      list(
        "N" = rcell(length(x), format = jjcsformat_xx("xx"))
      )
    }
  ) %>%
  analyze(
    "AVAL6",
    nested = TRUE,
    var_labels = "Final daily dose ([unit/day])",
    show_labels = "hidden",
    indent_mod = 2L,
    afun = function(x) {
      list(
        "Mean (SD)" = rcell(
          c(mean(x), sd(x)),
          format = jjcsformat_xx("xx.x (xx.xx)")
        ),
        "Median" = rcell(median(x), format = jjcsformat_xx("xx.x")),
        "Min, max" = rcell(
          c(min(x), max(x)),
          format = jjcsformat_xx("xx., xx.")
        ),
        "Interquartile range" = rcell(
          c(quantile(x, c(0.25, 0.75), type = 2)),
          format = jjcsformat_xx("xx.x, xx.x")
        )
      )
    }
  ) %>%
  analyze(
    "AVALCAT6",
    afun = a_freq_j,
    nested = FALSE,
    show_labels = "visible",
    var_labels = "Final daily dose ([unit/day]), n (%)",
    extra_args = extra_args1,
    indent_mod = 1L
  ) %>%
  append_topleft("Parameter")

result <- build_table(lyt, ex, alt_counts_df = adsl)

# Add titles and footnotes:

result <- set_titles(result, tab_titles)

# Convert to tbl file and output table

tt_to_tlgrtf(string_map = string_map, tt = result, file = fileid, orientation = "portrait")
```
```{r result1, echo=FALSE, message=FALSE, warning=FALSE, test = list(result_v1 = "result")}
tt_to_flextable_j(result, tblid, string_map = string_map) 
```

[Download RTF file](`r paste0(tolower(tblid), '.rtf')`)
::::

Made with ❤️ by the J&J Team

  • Edit this page
  • Report an issue
Cookie Preferences