Biomarker Analysis Catalog - Stable
  • Stable
    • Dev
  1. Tables
  2. DT
  3. DT1
  4. DT1A
  • Index

  • Tables
    • CPMT
      • CPMT1
      • CPMT2
        • CPMT2A
      • CPMT3
    • DT
      • DT1
        • DT1A
        • DT1B
        • DT1C
      • DT2
        • DT2A
    • TET
      • TET1
        • TET1A

  • Graphs
    • AG
      • AG1
    • DG
      • DG1
        • DG1A
        • DG1B
      • DG2
      • DG3
        • DG3A
      • DG4
    • KG
      • KG1
        • KG1A
        • KG1B
      • KG2
        • KG2A
      • KG3
      • KG4
        • KG4A
        • KG4B
      • KG5
        • KG5A
        • KG5B
    • RFG
      • RFG1
        • RFG1A
      • RFG2
        • RFG2A
        • RFG2B
        • RFG2C
      • RFG3
    • RG
      • RG1
        • RG1A
        • RG1B
        • RG1C
      • RG2
        • RG2A
      • RG3
        • RG3A
        • RG3B
    • SPG
      • SPG1
      • SPG2
    • RNAG
      • RNAG1
      • RNAG2
      • RNAG3
      • RNAG4
      • RNAG5
      • RNAG6
      • RNAG7
      • RNAG8
      • RNAG9
      • RNAG10
    • SFG
      • SFG1
        • SFG1A
        • SFG1B
      • SFG2
        • SFG2A
        • SFG2B
        • SFG2C
        • SFG2D
      • SFG3
        • SFG3A
      • SFG4
      • SFG5
        • SFG5A
        • SFG5B
        • SFG5C
      • SFG6
        • SFG6A
        • SFG6B
        • SFG6C
  1. Tables
  2. DT
  3. DT1
  4. DT1A

DT1A

Reorder Treatment Arms in Demographics Table

DT

  • Setup
  • Table
  • Session Info

The tables below compare the overall population (“All”) with the biomarker evaluable population (“BEP”) with regards to selected demographic variables.

We will use the cadsl data set from the random.cdisc.data package to illustrate the tables. We add a second artificial BEP flag variable BEP02FL.

In order to compare All with BEP, we need to define a list bep_groups defining these two groups. The reason is that these two groups are overlapping (BEP is a subset of All). Here, we refer in the list elements to the levels Y and N of the biomarker population flag variable BEP01FL from adsl which we will use below:

Code
library(tern)
library(dplyr)

set.seed(123)
adsl <- random.cdisc.data::cadsl %>%
  df_explicit_na() %>%
  mutate(BEP02FL = factor(sample(c("Y", "N"), size = n(), replace = TRUE)))

bep_groups <- list(
  "All" = c("Y", "N"),
  "BEP" = "Y"
)

This can then be used by the tern layout function split_cols_by_groups() below.

We can reorder the treatment arm columns in the demographics table DT1 by using the reorder_split_levels() splitting function in split_cols_by() as done here.

Code
lyt <- basic_table() %>%
  split_cols_by("ARM", split_fun = reorder_split_levels(c("B: Placebo", "A: Drug X", "C: Combination"))) %>%
  split_cols_by_groups("BEP01FL", bep_groups) %>%
  analyze_vars(c("AGE", "SEX")) %>%
  add_colcounts()

build_table(lyt, adsl)
                     B: Placebo                   A: Drug X                C: Combination      
                  All           BEP           All           BEP           All           BEP    
                (N=134)       (N=63)        (N=134)       (N=68)        (N=132)       (N=66)   
———————————————————————————————————————————————————————————————————————————————————————————————
AGE                                                                                            
  n               134           63            134           68            132           66     
  Mean (SD)   35.4 (7.9)    35.7 (8.3)    33.8 (6.6)    32.9 (6.6)    35.4 (7.7)    35.1 (8.1) 
  Median         35.0          35.0          33.0          32.0          35.0          34.0    
  Min - Max   21.0 - 62.0   23.0 - 62.0   21.0 - 50.0   21.0 - 50.0   20.0 - 69.0   21.0 - 69.0
SEX                                                                                            
  n               134           63            134           68            132           66     
  F           82 (61.2%)    42 (66.7%)     79 (59%)     44 (64.7%)     70 (53%)     40 (60.6%) 
  M           52 (38.8%)    21 (33.3%)     55 (41%)     24 (35.3%)     62 (47%)     26 (39.4%) 
Code
sessionInfo()
R version 4.4.2 (2024-10-31)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 24.04.1 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: Etc/UTC
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] dplyr_1.1.4       tern_0.9.7        rtables_0.6.11    magrittr_2.0.3   
[5] formatters_0.5.10

loaded via a namespace (and not attached):
 [1] Matrix_1.7-2             gtable_0.3.6             jsonlite_1.9.0          
 [4] compiler_4.4.2           tidyselect_1.2.1         stringr_1.5.1           
 [7] tidyr_1.3.1              splines_4.4.2            scales_1.3.0            
[10] yaml_2.3.10              fastmap_1.2.0            lattice_0.22-6          
[13] ggplot2_3.5.1            R6_2.6.1                 generics_0.1.3          
[16] knitr_1.49               forcats_1.0.0            rbibutils_2.3           
[19] htmlwidgets_1.6.4        backports_1.5.0          checkmate_2.3.2         
[22] tibble_3.2.1             munsell_0.5.1            pillar_1.10.1           
[25] rlang_1.1.5              broom_1.0.7              stringi_1.8.4           
[28] xfun_0.51                cli_3.6.4                Rdpack_2.6.2            
[31] digest_0.6.37            grid_4.4.2               lifecycle_1.0.4         
[34] vctrs_0.6.5              evaluate_1.0.3           glue_1.8.0              
[37] nestcolor_0.1.3          codetools_0.2-20         survival_3.8-3          
[40] random.cdisc.data_0.3.16 colorspace_2.1-1         rmarkdown_2.29          
[43] purrr_1.0.4              tools_4.4.2              pkgconfig_2.0.3         
[46] htmltools_0.5.8.1       

Reuse

Copyright 2023, Hoffmann-La Roche Ltd.
DT
DT1B
Source Code
---
title: DT1A
subtitle: Reorder Treatment Arms in Demographics Table
categories: [DT]
---

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

::: panel-tabset
{{< include setup.qmd >}}

## Table

We can reorder the treatment arm columns in the demographics table DT1 by using the `reorder_split_levels()` splitting function in `split_cols_by()` as done here.

```{r}
lyt <- basic_table() %>%
  split_cols_by("ARM", split_fun = reorder_split_levels(c("B: Placebo", "A: Drug X", "C: Combination"))) %>%
  split_cols_by_groups("BEP01FL", bep_groups) %>%
  analyze_vars(c("AGE", "SEX")) %>%
  add_colcounts()

build_table(lyt, adsl)
```

{{< include ../../misc/session_info.qmd >}}
:::

Made with ❤️ by the Statistical Engineering Team StatisticalEngineering

  • License

  • Edit this page
  • Report an issue
Cookie Preferences