Introduction
Baseline tables show participant demographics, medical history, and enrollment data at randomization.
Setup
library(pharmhand)
library(dplyr)
library(pharmaverseadam)
# Set flextable defaults for readable tables in light/dark mode
flextable::set_flextable_defaults(
font.color = "#000000",
background.color = "#FFFFFF"
)
# Load example data
adsl <- pharmaverseadam::adsl
admh <- pharmaverseadam::admh
adcm <- pharmaverseadam::adcmDemographics table
The demographics table presents basic participant characteristics including age, sex, and ethnicity.
Simple approach: Pass data.frame directly
# Simplest: pass data.frame directly (auto-coerced)
demo_table <- create_demographics_table(adsl)
# Display the table
demo_table@flextableDemographics and Baseline Characteristics | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TRT01P |
n |
mean |
sd |
median |
min |
max |
variable |
layer_type |
Pooled Age Group 1 |
N_tot |
pct |
Sex |
Race |
Ethnicity |
Country |
Placebo |
86 |
75.2 |
8.6 |
76.0 |
52.0 |
89.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
84 |
74.4 |
7.9 |
76.0 |
56.0 |
88.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
84 |
75.7 |
8.3 |
77.5 |
51.0 |
88.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Screen Failure |
52 |
75.1 |
9.7 |
76.0 |
50.0 |
89.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Placebo |
14 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
86 |
16.3 |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
73 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
84 |
86.9 |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
76 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
84 |
90.5 |
-- |
-- |
-- |
-- |
Placebo |
72 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
86 |
83.7 |
-- |
-- |
-- |
-- |
Screen Failure |
9 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
52 |
17.3 |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
11 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
84 |
13.1 |
-- |
-- |
-- |
-- |
Screen Failure |
43 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
52 |
82.7 |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
8 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
84 |
9.5 |
-- |
-- |
-- |
-- |
Placebo |
53 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
86 |
61.6 |
F |
-- |
-- |
-- |
Placebo |
33 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
86 |
38.4 |
M |
-- |
-- |
-- |
Xanomeline High Dose |
44 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
52.4 |
M |
-- |
-- |
-- |
Xanomeline Low Dose |
34 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
40.5 |
M |
-- |
-- |
-- |
Xanomeline High Dose |
40 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
47.6 |
F |
-- |
-- |
-- |
Screen Failure |
36 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
52 |
69.2 |
F |
-- |
-- |
-- |
Xanomeline Low Dose |
50 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
59.5 |
F |
-- |
-- |
-- |
Screen Failure |
16 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
52 |
30.8 |
M |
-- |
-- |
-- |
Placebo |
78 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
86 |
90.7 |
-- |
WHITE |
-- |
-- |
Xanomeline High Dose |
74 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
88.1 |
-- |
WHITE |
-- |
-- |
Xanomeline Low Dose |
78 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
92.9 |
-- |
WHITE |
-- |
-- |
Screen Failure |
43 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
82.7 |
-- |
WHITE |
-- |
-- |
Screen Failure |
1 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
1.9 |
-- |
AMERICAN INDIAN OR ALASKA NATIVE |
-- |
-- |
Placebo |
8 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
86 |
9.3 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Screen Failure |
6 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
11.5 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Xanomeline High Dose |
1 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
1.2 |
-- |
AMERICAN INDIAN OR ALASKA NATIVE |
-- |
-- |
Xanomeline Low Dose |
6 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
7.1 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Xanomeline High Dose |
9 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
10.7 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Screen Failure |
2 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
3.8 |
-- |
ASIAN |
-- |
-- |
Placebo |
3 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
86 |
3.5 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Xanomeline High Dose |
81 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
96.4 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Xanomeline Low Dose |
78 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
92.9 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Placebo |
83 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
86 |
96.5 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Screen Failure |
5 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
52 |
9.6 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Screen Failure |
47 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
52 |
90.4 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Xanomeline High Dose |
3 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
3.6 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Xanomeline Low Dose |
6 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
7.1 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Placebo |
86 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
86 |
100.0 |
-- |
-- |
-- |
USA |
Xanomeline High Dose |
84 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
84 |
100.0 |
-- |
-- |
-- |
USA |
Xanomeline Low Dose |
84 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
84 |
100.0 |
-- |
-- |
-- |
USA |
Screen Failure |
52 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
52 |
100.0 |
-- |
-- |
-- |
USA |
FAS Population | |||||||||||||||
Age summarized as n, Mean (SD), Median, Min-Max | |||||||||||||||
Categorical variables presented as n (%) | |||||||||||||||
The function automatically wraps the data.frame in an ADaMData
object. See ?create_demographics_table for full parameter
documentation.
Advanced approach: Explicit ADaMData for population filtering
For population filtering, create an ADaMData object explicitly:
# Wrap ADSL with population filtering
adam_data <- ADaMData(
data = adsl,
domain = "ADSL",
population = "SAF"
)
# Pass to table function
demo_table_saf <- create_demographics_table(
data = adam_data,
trt_var = "TRT01P"
)
# Display the table
demo_table_saf@flextableDemographics and Baseline Characteristics | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TRT01P |
n |
mean |
sd |
median |
min |
max |
variable |
layer_type |
Pooled Age Group 1 |
N_tot |
pct |
Sex |
Race |
Ethnicity |
Country |
Placebo |
86 |
75.2 |
8.6 |
76.0 |
52.0 |
89.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
84 |
74.4 |
7.9 |
76.0 |
56.0 |
88.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
84 |
75.7 |
8.3 |
77.5 |
51.0 |
88.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Screen Failure |
52 |
75.1 |
9.7 |
76.0 |
50.0 |
89.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Placebo |
14 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
86 |
16.3 |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
73 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
84 |
86.9 |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
76 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
84 |
90.5 |
-- |
-- |
-- |
-- |
Placebo |
72 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
86 |
83.7 |
-- |
-- |
-- |
-- |
Screen Failure |
9 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
52 |
17.3 |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
11 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
84 |
13.1 |
-- |
-- |
-- |
-- |
Screen Failure |
43 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
52 |
82.7 |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
8 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
84 |
9.5 |
-- |
-- |
-- |
-- |
Placebo |
53 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
86 |
61.6 |
F |
-- |
-- |
-- |
Placebo |
33 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
86 |
38.4 |
M |
-- |
-- |
-- |
Xanomeline High Dose |
44 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
52.4 |
M |
-- |
-- |
-- |
Xanomeline Low Dose |
34 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
40.5 |
M |
-- |
-- |
-- |
Xanomeline High Dose |
40 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
47.6 |
F |
-- |
-- |
-- |
Screen Failure |
36 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
52 |
69.2 |
F |
-- |
-- |
-- |
Xanomeline Low Dose |
50 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
59.5 |
F |
-- |
-- |
-- |
Screen Failure |
16 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
52 |
30.8 |
M |
-- |
-- |
-- |
Placebo |
78 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
86 |
90.7 |
-- |
WHITE |
-- |
-- |
Xanomeline High Dose |
74 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
88.1 |
-- |
WHITE |
-- |
-- |
Xanomeline Low Dose |
78 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
92.9 |
-- |
WHITE |
-- |
-- |
Screen Failure |
43 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
82.7 |
-- |
WHITE |
-- |
-- |
Screen Failure |
1 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
1.9 |
-- |
AMERICAN INDIAN OR ALASKA NATIVE |
-- |
-- |
Placebo |
8 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
86 |
9.3 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Screen Failure |
6 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
11.5 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Xanomeline High Dose |
1 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
1.2 |
-- |
AMERICAN INDIAN OR ALASKA NATIVE |
-- |
-- |
Xanomeline Low Dose |
6 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
7.1 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Xanomeline High Dose |
9 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
10.7 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Screen Failure |
2 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
3.8 |
-- |
ASIAN |
-- |
-- |
Placebo |
3 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
86 |
3.5 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Xanomeline High Dose |
81 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
96.4 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Xanomeline Low Dose |
78 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
92.9 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Placebo |
83 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
86 |
96.5 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Screen Failure |
5 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
52 |
9.6 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Screen Failure |
47 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
52 |
90.4 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Xanomeline High Dose |
3 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
3.6 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Xanomeline Low Dose |
6 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
7.1 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Placebo |
86 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
86 |
100.0 |
-- |
-- |
-- |
USA |
Xanomeline High Dose |
84 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
84 |
100.0 |
-- |
-- |
-- |
USA |
Xanomeline Low Dose |
84 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
84 |
100.0 |
-- |
-- |
-- |
USA |
Screen Failure |
52 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
52 |
100.0 |
-- |
-- |
-- |
USA |
SAF Population | |||||||||||||||
Age summarized as n, Mean (SD), Median, Min-Max | |||||||||||||||
Categorical variables presented as n (%) | |||||||||||||||
Customize variable names to match your data structure:
# Custom variable names
demo_table_custom <- create_demographics_table(
data = adam_data,
trt_var = "TRT01P",
age_var = "AGE",
sex_var = "SEX",
ethnic_var = "ETHNIC"
)
# Display the table
demo_table_custom@flextableDemographics and Baseline Characteristics | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TRT01P |
n |
mean |
sd |
median |
min |
max |
variable |
layer_type |
Pooled Age Group 1 |
N_tot |
pct |
Sex |
Race |
Ethnicity |
Country |
Placebo |
86 |
75.2 |
8.6 |
76.0 |
52.0 |
89.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
84 |
74.4 |
7.9 |
76.0 |
56.0 |
88.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
84 |
75.7 |
8.3 |
77.5 |
51.0 |
88.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Screen Failure |
52 |
75.1 |
9.7 |
76.0 |
50.0 |
89.0 |
AGE |
descriptive |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Placebo |
14 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
86 |
16.3 |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
73 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
84 |
86.9 |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
76 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
84 |
90.5 |
-- |
-- |
-- |
-- |
Placebo |
72 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
86 |
83.7 |
-- |
-- |
-- |
-- |
Screen Failure |
9 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
52 |
17.3 |
-- |
-- |
-- |
-- |
Xanomeline High Dose |
11 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
84 |
13.1 |
-- |
-- |
-- |
-- |
Screen Failure |
43 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
>64 |
52 |
82.7 |
-- |
-- |
-- |
-- |
Xanomeline Low Dose |
8 |
-- |
-- |
-- |
-- |
-- |
AGEGR1 |
count |
18-64 |
84 |
9.5 |
-- |
-- |
-- |
-- |
Placebo |
53 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
86 |
61.6 |
F |
-- |
-- |
-- |
Placebo |
33 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
86 |
38.4 |
M |
-- |
-- |
-- |
Xanomeline High Dose |
44 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
52.4 |
M |
-- |
-- |
-- |
Xanomeline Low Dose |
34 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
40.5 |
M |
-- |
-- |
-- |
Xanomeline High Dose |
40 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
47.6 |
F |
-- |
-- |
-- |
Screen Failure |
36 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
52 |
69.2 |
F |
-- |
-- |
-- |
Xanomeline Low Dose |
50 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
84 |
59.5 |
F |
-- |
-- |
-- |
Screen Failure |
16 |
-- |
-- |
-- |
-- |
-- |
SEX |
count |
-- |
52 |
30.8 |
M |
-- |
-- |
-- |
Placebo |
78 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
86 |
90.7 |
-- |
WHITE |
-- |
-- |
Xanomeline High Dose |
74 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
88.1 |
-- |
WHITE |
-- |
-- |
Xanomeline Low Dose |
78 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
92.9 |
-- |
WHITE |
-- |
-- |
Screen Failure |
43 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
82.7 |
-- |
WHITE |
-- |
-- |
Screen Failure |
1 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
1.9 |
-- |
AMERICAN INDIAN OR ALASKA NATIVE |
-- |
-- |
Placebo |
8 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
86 |
9.3 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Screen Failure |
6 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
11.5 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Xanomeline High Dose |
1 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
1.2 |
-- |
AMERICAN INDIAN OR ALASKA NATIVE |
-- |
-- |
Xanomeline Low Dose |
6 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
7.1 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Xanomeline High Dose |
9 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
84 |
10.7 |
-- |
BLACK OR AFRICAN AMERICAN |
-- |
-- |
Screen Failure |
2 |
-- |
-- |
-- |
-- |
-- |
RACE |
count |
-- |
52 |
3.8 |
-- |
ASIAN |
-- |
-- |
Placebo |
3 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
86 |
3.5 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Xanomeline High Dose |
81 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
96.4 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Xanomeline Low Dose |
78 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
92.9 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Placebo |
83 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
86 |
96.5 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Screen Failure |
5 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
52 |
9.6 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Screen Failure |
47 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
52 |
90.4 |
-- |
-- |
NOT HISPANIC OR LATINO |
-- |
Xanomeline High Dose |
3 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
3.6 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Xanomeline Low Dose |
6 |
-- |
-- |
-- |
-- |
-- |
ETHNIC |
count |
-- |
84 |
7.1 |
-- |
-- |
HISPANIC OR LATINO |
-- |
Placebo |
86 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
86 |
100.0 |
-- |
-- |
-- |
USA |
Xanomeline High Dose |
84 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
84 |
100.0 |
-- |
-- |
-- |
USA |
Xanomeline Low Dose |
84 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
84 |
100.0 |
-- |
-- |
-- |
USA |
Screen Failure |
52 |
-- |
-- |
-- |
-- |
-- |
COUNTRY |
count |
-- |
52 |
100.0 |
-- |
-- |
-- |
USA |
SAF Population | |||||||||||||||
Age summarized as n, Mean (SD), Median, Min-Max | |||||||||||||||
Categorical variables presented as n (%) | |||||||||||||||
Enrollment by region
region_table <- create_region_table(
data = adsl,
trt_var = "TRT01P",
region_var = "REGION1"
)
# Display the table
region_table@flextableEnrollment by Region | ||||||
|---|---|---|---|---|---|---|
Planned Treatment for Period 01 |
Geographic Region 1 |
n |
N_tot |
pct |
variable |
layer_type |
Placebo |
NA |
86 |
86 |
100.0 |
REGION1 |
count |
Xanomeline High Dose |
NA |
84 |
84 |
100.0 |
REGION1 |
count |
Xanomeline Low Dose |
NA |
84 |
84 |
100.0 |
REGION1 |
count |
Screen Failure |
NA |
52 |
52 |
100.0 |
REGION1 |
count |
FAS Population | ||||||
n (%) = Number (percentage) of subjects | ||||||
Medical history
Click to expand: Medical History Table
mh_table <- create_medical_history_table(
data = admh,
adsl = adsl,
trt_var = "TRT01P",
soc_var = "MHBODSYS"
)
# Display the table
mh_table@flextableMedical History by Body System | |||
|---|---|---|---|
Body System or Organ Class |
Placebo |
Xanomeline High Dose |
Xanomeline Low Dose |
BLOOD AND LYMPHATIC SYSTEM DISORDERS |
2 (2.3%) |
4 (4.8%) |
1 (1.2%) |
CARDIAC DISORDERS |
17 (19.8%) |
17 (20.2%) |
23 (27.4%) |
CONGENITAL, FAMILIAL AND GENETIC DISORDERS |
3 (3.5%) |
3 (3.6%) |
0 (0.0%) |
EAR AND LABYRINTH DISORDERS |
16 (18.6%) |
22 (26.2%) |
12 (14.3%) |
ENDOCRINE DISORDERS |
7 (8.1%) |
8 (9.5%) |
10 (11.9%) |
EYE DISORDERS |
26 (30.2%) |
28 (33.3%) |
26 (31%) |
GASTROINTESTINAL DISORDERS |
29 (33.7%) |
28 (33.3%) |
29 (34.5%) |
GENERAL DISORDERS AND ADMINISTRATION SITE CONDITIONS |
10 (11.6%) |
7 (8.3%) |
12 (14.3%) |
HEPATOBILIARY DISORDERS |
2 (2.3%) |
3 (3.6%) |
2 (2.4%) |
IMMUNE SYSTEM DISORDERS |
3 (3.5%) |
4 (4.8%) |
4 (4.8%) |
INFECTIONS AND INFESTATIONS |
16 (18.6%) |
14 (16.7%) |
15 (17.9%) |
INJURY, POISONING AND PROCEDURAL COMPLICATIONS |
16 (18.6%) |
13 (15.5%) |
14 (16.7%) |
INVESTIGATIONS |
7 (8.1%) |
20 (23.8%) |
12 (14.3%) |
METABOLISM AND NUTRITION DISORDERS |
12 (14%) |
16 (19%) |
8 (9.5%) |
MUSCULOSKELETAL AND CONNECTIVE TISSUE DISORDERS |
37 (43%) |
40 (47.6%) |
41 (48.8%) |
NEOPLASMS BENIGN, MALIGNANT AND UNSPECIFIED (INCL CYSTS AND POLYPS) |
13 (15.1%) |
8 (9.5%) |
10 (11.9%) |
NERVOUS SYSTEM DISORDERS |
20 (23.3%) |
24 (28.6%) |
17 (20.2%) |
PREGNANCY, PUERPERIUM AND PERINATAL CONDITIONS |
0 (0.0%) |
0 (0.0%) |
1 (1.2%) |
PSYCHIATRIC DISORDERS |
6 (7%) |
10 (11.9%) |
6 (7.1%) |
RENAL AND URINARY DISORDERS |
5 (5.8%) |
9 (10.7%) |
10 (11.9%) |
REPRODUCTIVE SYSTEM AND BREAST DISORDERS |
7 (8.1%) |
8 (9.5%) |
10 (11.9%) |
RESPIRATORY, THORACIC AND MEDIASTINAL DISORDERS |
15 (17.4%) |
7 (8.3%) |
12 (14.3%) |
SKIN AND SUBCUTANEOUS TISSUE DISORDERS |
11 (12.8%) |
9 (10.7%) |
12 (14.3%) |
SOCIAL CIRCUMSTANCES |
7 (8.1%) |
9 (10.7%) |
8 (9.5%) |
SURGICAL AND MEDICAL PROCEDURES |
45 (52.3%) |
55 (65.5%) |
59 (70.2%) |
VASCULAR DISORDERS |
22 (25.6%) |
27 (32.1%) |
20 (23.8%) |
-- |
86 (100%) |
84 (100%) |
84 (100%) |
FAS Population | |||
n (%) = Number (percentage) of subjects with at least one condition | |||
Concomitant medications
Click to expand: Concomitant Medications Table
cm_table <- create_conmeds_table(
data = adcm,
adsl = adsl,
trt_var = "TRT01P"
)
# Display the table
cm_table@flextablePrior and Concomitant Medications by Class | |||
|---|---|---|---|
Medication Class |
Placebo |
Xanomeline High Dose |
Xanomeline Low Dose |
ALIMENTARY TRACT AND METABOLISM |
12 (14%) |
9 (10.7%) |
11 (13.1%) |
ANTINEOPLASTIC AND IMMUNOMODULATING AGENTS |
1 (1.2%) |
1 (1.2%) |
0 (0.0%) |
BLOOD AND BLOOD FORMING ORGANS |
0 (0.0%) |
0 (0.0%) |
1 (1.2%) |
CARDIOVASCULAR SYSTEM |
12 (14%) |
7 (8.3%) |
12 (14.3%) |
DERMATOLOGICALS |
0 (0.0%) |
1 (1.2%) |
0 (0.0%) |
GENITO URINARY SYSTEM AND SEX HORMONES |
6 (7%) |
5 (6%) |
10 (11.9%) |
NERVOUS SYSTEM |
23 (26.7%) |
8 (9.5%) |
14 (16.7%) |
RESPIRATORY SYSTEM |
4 (4.7%) |
4 (4.8%) |
1 (1.2%) |
SYSTEMIC HORMONAL PREPARATIONS, EXCL. |
2 (2.3%) |
8 (9.5%) |
13 (15.5%) |
UNCODED |
74 (86%) |
77 (91.7%) |
70 (83.3%) |
FAS Population | |||
n (%) = Number (percentage) of subjects taking at least one medication | |||
Disposition
Disposition tables summarize participant flow through study phases and reasons for discontinuation.
disp_table <- create_disposition_table(
data = adsl,
trt_var = "TRT01P"
)
# Display the table
disp_table@flextableSubject Disposition | ||||
|---|---|---|---|---|
End of Study Status |
Placebo |
Xanomeline High Dose |
Xanomeline Low Dose |
Screen Failure |
COMPLETED |
58 |
27 |
25 |
0 |
DISCONTINUED |
28 |
57 |
59 |
0 |
-- |
0 |
0 |
0 |
52 |
FAS Population | ||||
Population summary
Population summary tables provide counts and percentages for different analysis populations.
pop_table <- create_population_summary_table(
data = adsl,
trt_var = "TRT01P",
pop_flags = c("SAFFL"),
pop_labels = c("Safety")
)
# Display the table
pop_table@flextableAnalysis Populations | |||
|---|---|---|---|
Population |
Placebo |
Xanomeline High Dose |
Xanomeline Low Dose |
Safety |
86 |
84 |
84 |
ITT = Intent-To-Treat Population | |||
Safety = Safety Population (subjects who received study drug) | |||
Baseline Balance Assessment (SMD)
For GBA/AMNOG dossiers and other regulatory submissions, assessing baseline balance between treatment groups is critical. The standardized mean difference (SMD) provides a standardized measure of covariate balance that is independent of sample size.
Calculating SMD for individual variables
# Calculate SMD for a continuous variable
smd_age <- calculate_smd_from_data(
data = adsl,
var = "AGE",
trt_var = "TRT01P",
ref_group = "Placebo"
)
# View SMD result
cat("Age SMD:", round(smd_age$smd, 3),
"95% CI: (", round(smd_age$ci_lower, 3), ",",
round(smd_age$ci_upper, 3), ")\n")
#> Age SMD: -0.1 95% CI: ( -0.401 , 0.2 )
# Calculate SMD for a categorical variable
smd_sex <- calculate_smd_from_data(
data = adsl,
var = "SEX",
trt_var = "TRT01P",
ref_group = "Placebo"
)
cat("Sex SMD:", round(smd_sex$smd, 3), "\n")
#> Sex SMD: 0.282Comprehensive balance assessment
Use assess_baseline_balance() for a complete assessment
of multiple variables:
# Assess balance for continuous and categorical variables
balance <- assess_baseline_balance(
data = adsl,
trt_var = "TRT01P",
continuous_vars = c("AGE"),
categorical_vars = c("SEX", "RACE", "ETHNIC"),
ref_group = "Placebo",
threshold = 0.1 # Standard threshold for imbalance
)
# Check overall balance
cat("Number of variables assessed:", balance@n_vars, "\n")
#> Number of variables assessed: 4
cat("Number of imbalanced variables (|SMD| > 0.1):", balance@n_imbalanced, "\n")
#> Number of imbalanced variables (|SMD| > 0.1): 2
cat("Overall balanced:", balance@balanced, "\n")
#> Overall balanced: FALSE
# View imbalanced variables (if any)
if (length(balance@imbalanced_vars) > 0) {
imbalanced <- paste(balance@imbalanced_vars, collapse = ", ")
cat("Imbalanced variables:", imbalanced, "\n")
}
#> Imbalanced variables: AGE, SEXSMD table for demographics
Add SMD values directly to your demographics table data:
# Generate SMD table
smd_results <- add_smd_to_table(
data = adsl,
trt_var = "TRT01P",
vars = c("AGE", "SEX", "RACE", "ETHNIC"),
ref_group = "Placebo",
threshold = 0.1
)
# View the results
smd_results |>
dplyr::select(variable, smd_display, ci, var_type, imbalanced)
#> variable smd_display ci var_type imbalanced
#> 1 AGE -0.100* (-0.401, 0.200) continuous TRUE
#> 2 SEX 0.282* (-0.018, 0.583) categorical TRUE
#> 3 RACE -0.085 (-0.385, 0.216) categorical FALSE
#> 4 ETHNIC -0.005 (-0.305, 0.296) categorical FALSELove Plot visualization
A Love plot (covariate balance plot) provides a visual summary of balance across all covariates:
# Create Love plot from balance assessment
love_plot <- create_love_plot(
balance_assessment = balance,
threshold = 0.1,
title = "Baseline Covariate Balance",
show_ci = TRUE
)
# Display the plot
love_plot@plot
Variables with |SMD| > 0.1 (outside the dashed lines) may indicate meaningful imbalance that should be discussed or adjusted for in sensitivity analyses.
Combining into a report
Combine baseline tables into a report.
# Create report sections
demo_section <- ReportSection(
title = "Demographics",
content = demo_table
)
region_section <- ReportSection(
title = "Enrollment by Region",
content = region_table
)
mh_section <- ReportSection(
title = "Medical History",
content = mh_table
)
# cm_section <- ReportSection(
# title = "Concomitant Medications",
# content = cm_table
# )
# Create clinical report
report <- ClinicalReport(
title = "Baseline Characteristics",
sections = list(
demo_section,
region_section,
mh_section
)
)
# Generate Word document
generate_word(report, path = tempfile(fileext = ".docx"))The Word document contains formatted baseline tables.
