Biomarker Analysis Catalog - Dev
  • Dev
    • Stable
  1. Tables
  2. DT
  • 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

DT1

Demographics Tables Comparing BEP vs. Overall Population

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.

The simplest demographics table DT1 splits the columns by treatment arm and All vs. BEP, and summarizes selected demographic variables in the rows.

Code
lyt <- basic_table() %>%
  split_cols_by("ARM") %>%
  split_cols_by_groups("BEP01FL", bep_groups) %>%
  analyze_vars(c("AGE", "SEX")) %>%
  add_colcounts()

build_table(lyt, adsl)
                      A: Drug X                  B: Placebo                C: Combination      
                  All           BEP           All           BEP           All           BEP    
                (N=134)       (N=68)        (N=134)       (N=63)        (N=132)       (N=66)   
———————————————————————————————————————————————————————————————————————————————————————————————
AGE                                                                                            
  n               134           68            134           63            132           66     
  Mean (SD)   33.8 (6.6)    32.9 (6.6)    35.4 (7.9)    35.7 (8.3)    35.4 (7.7)    35.1 (8.1) 
  Median         33.0          32.0          35.0          35.0          35.0          34.0    
  Min - Max   21.0 - 50.0   21.0 - 50.0   21.0 - 62.0   23.0 - 62.0   20.0 - 69.0   21.0 - 69.0
SEX                                                                                            
  n               134           68            134           63            132           66     
  F            79 (59%)     44 (64.7%)    82 (61.2%)    42 (66.7%)     70 (53%)     40 (60.6%) 
  M            55 (41%)     24 (35.3%)    52 (38.8%)    21 (33.3%)     62 (47%)     26 (39.4%) 
Code
sessionInfo()
R version 4.4.1 (2024-06-14)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 22.04.4 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.20.so;  LAPACK version 3.10.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.5.9022       rtables_0.6.9.9014   
[4] magrittr_2.0.3        formatters_0.5.9.9001

loaded via a namespace (and not attached):
 [1] Matrix_1.7-0                  gtable_0.3.5                 
 [3] jsonlite_1.8.8                compiler_4.4.1               
 [5] tidyselect_1.2.1              stringr_1.5.1                
 [7] tidyr_1.3.1                   splines_4.4.1                
 [9] scales_1.3.0                  yaml_2.3.10                  
[11] fastmap_1.2.0                 lattice_0.22-6               
[13] ggplot2_3.5.1                 R6_2.5.1                     
[15] generics_0.1.3                knitr_1.48                   
[17] forcats_1.0.0                 rbibutils_2.2.16             
[19] htmlwidgets_1.6.4             backports_1.5.0              
[21] checkmate_2.3.2               tibble_3.2.1                 
[23] munsell_0.5.1                 pillar_1.9.0                 
[25] rlang_1.1.4                   utf8_1.2.4                   
[27] broom_1.0.6                   stringi_1.8.4                
[29] xfun_0.47                     cli_3.6.3                    
[31] Rdpack_2.6.1                  digest_0.6.37                
[33] grid_4.4.1                    lifecycle_1.0.4              
[35] vctrs_0.6.5                   evaluate_0.24.0              
[37] glue_1.7.0                    codetools_0.2-20             
[39] survival_3.7-0                random.cdisc.data_0.3.15.9009
[41] fansi_1.0.6                   colorspace_2.1-1             
[43] purrr_1.0.2                   rmarkdown_2.28               
[45] tools_4.4.1                   pkgconfig_2.0.3              
[47] htmltools_0.5.8.1            

Reuse

Copyright 2023, Hoffmann-La Roche Ltd.
CPMT3
DT1A
Source Code
---
title: DT1
subtitle: Demographics Tables Comparing BEP vs. Overall Population
categories: [DT]
---

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

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

## Table

The simplest demographics table DT1 splits the columns by treatment arm and All vs. BEP, and summarizes selected demographic variables in the rows.

```{r}
lyt <- basic_table() %>%
  split_cols_by("ARM") %>%
  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