cardinal
  • Home
  • Template Catalog
  • About
  • Resources
  • Help
    • Getting Started
    • Report a Bug
    • FAQ

FDA Table 21

Overview of Serious Adverse Events by Demographic Subgroup, Safety Population, Pooled Analysis (or Trial X)

table
FDA
safety
adverse events
  • Table Preview
  • Setup
  • Build Table
  • Build ARD

Code
# Load libraries & data -------------------------------------
library(dplyr)
library(cards)
library(gtsummary)

adae <- random.cdisc.data::cadae
adsl <- random.cdisc.data::cadsl

adsl <- adsl |>
  filter(SAFFL == "Y")

data <- adae |>
  filter(
    SAFFL == "Y",
    TRTEMFL == "Y",
    AESER == "Y"
  ) |>
  mutate(
    SEXGR = "Sex, n (%)",
    SEXGR1 = as.factor(SEX),
    AGEGR = "Age group, years, n(%)",
    AGEGR1 = factor(
      dplyr::case_when(
        AGE >= 17 & AGE < 65 ~ ">=17 to <65",
        AGE >= 65 & AGE < 75 ~ "65-74",
        AGE >= 75 ~ ">=75"
      ),
      levels = c(">=17 to <65", "65-74", ">=75")
    ),
    RACEGR = "Race, n(%)",
    RACEGR1 = as.factor(RACE),
    ETHNICGR = "Ethnicity, n(%)",
    ETHNICGR1 = as.factor(RACE)
  )

data_any_sae <- adae |>
  filter(AESER == "Y") |>
  mutate(AESER = "Any SAE, n(%)")
Code
tbl_any_sae <- tbl_hierarchical(
  data = data_any_sae,
  denominator = adsl,
  id = "USUBJID",
  by = "ARM",
  variables = "AESER",
  statistic = ~"{n} ({p}%)",
  label = AESER ~ "Characteristic"
)

tbl_sex <- tbl_hierarchical(
  data = data,
  denominator = data_any_sae |> slice_head(by = c(USUBJID)),
  id = "USUBJID",
  by = "ARM",
  variables = c(SEXGR, SEXGR1),
  include = SEXGR1,
  statistic = ~"{n}/{N} ({p}%)"
)

tbl_agegr1 <- tbl_hierarchical(
  data = data,
  denominator = data_any_sae |> slice_head(by = c(USUBJID)),
  id = "USUBJID",
  by = "ARM",
  variables = c(AGEGR, AGEGR1),
  include = AGEGR1,
  statistic = ~"{n}/{N} ({p}%)"
)

tbl_race <- tbl_hierarchical(
  data = data,
  denominator = data_any_sae |> slice_head(by = c(USUBJID)),
  id = "USUBJID",
  by = "ARM",
  variables = c(RACEGR, RACEGR1),
  include = RACEGR1,
  statistic = ~"{n}/{N} ({p}%)"
)

tbl_ethnic <- tbl_hierarchical(
  data = data,
  denominator = data_any_sae |> slice_head(by = c(USUBJID)),
  id = "USUBJID",
  by = "ARM",
  variables = c(ETHNICGR, ETHNICGR1),
  include = ETHNICGR1,
  statistic = ~"{n}/{N} ({p}%)"
)

tbl <- list(tbl_any_sae, tbl_sex, tbl_agegr1, tbl_race, tbl_ethnic) |>
  tbl_stack() |>
  modify_column_indent("label", rows = !(variable %in% c("..ard_hierarchical_overall..", "AESER", "SEXGR", "AGEGR", "RACEGR", "ETHNICGR"))) |>
  remove_footnote_header(columns = everything())

tbl
Characteristic A: Drug X
N = 134
B: Placebo
N = 134
C: Combination
N = 132
Any SAE, n(%) 104 (78%) 101 (75%) 99 (75%)
Sex, n (%)


    F 61/104 (59%) 64/101 (63%) 50/99 (51%)
    M 43/104 (41%) 37/101 (37%) 49/99 (49%)
Age group, years, n(%)


    >=17 to <65 104/104 (100%) 101/101 (100%) 98/99 (99%)
    65-74 0/104 (0%) 0/101 (0%) 1/99 (1.0%)
Race, n(%)


    ASIAN 52/104 (50%) 46/101 (46%) 51/99 (52%)
    BLACK OR AFRICAN AMERICAN 23/104 (22%) 23/101 (23%) 26/99 (26%)
    WHITE 22/104 (21%) 22/101 (22%) 17/99 (17%)
    AMERICAN INDIAN OR ALASKA NATIVE 7/104 (6.7%) 8/101 (7.9%) 5/99 (5.1%)
    MULTIPLE 0/104 (0%) 1/101 (1.0%) 0/99 (0%)
    NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 0/104 (0%) 1/101 (1.0%) 0/99 (0%)
Ethnicity, n(%)


    ASIAN 52/104 (50%) 46/101 (46%) 51/99 (52%)
    BLACK OR AFRICAN AMERICAN 23/104 (22%) 23/101 (23%) 26/99 (26%)
    WHITE 22/104 (21%) 22/101 (22%) 17/99 (17%)
    AMERICAN INDIAN OR ALASKA NATIVE 7/104 (6.7%) 8/101 (7.9%) 5/99 (5.1%)
    MULTIPLE 0/104 (0%) 1/101 (1.0%) 0/99 (0%)
    NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER 0/104 (0%) 1/101 (1.0%) 0/99 (0%)
Code
ard <- gather_ard(tbl)

ard
[[1]]
[[1]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                   ARM      A: Drug X categori…         n          n   134      134       0                   stat_1
2    <NA>                   ARM      A: Drug X categori…         N          N   400      400       0                   stat_1
3    <NA>                   ARM      A: Drug X categori…         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                   ARM      B: Place… categori…         n          n   134      134       0                   stat_2
5    <NA>                   ARM      B: Place… categori…         N          N   400      400       0                   stat_2
6    <NA>                   ARM      B: Place… categori…         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                   ARM      C: Combi… categori…         n          n   132      132       0                   stat_3
8    <NA>                   ARM      C: Combi… categori…         N          N   400      400       0                   stat_3
9    <NA>                   ARM      C: Combi… categori…         p          %  0.33     33.0    <fn>                   stat_3
10    ARM    A: Drug X    AESER      Any SAE,… hierarch…         n          n   104      104    <fn>                   stat_1
11    ARM    A: Drug X    AESER      Any SAE,… hierarch…         N          N   134      134    <fn>                   stat_1
12    ARM    A: Drug X    AESER      Any SAE,… hierarch…         p          % 0.776       78    <fn>                   stat_1
13    ARM    B: Place…    AESER      Any SAE,… hierarch…         n          n   101      101    <fn>                   stat_2
14    ARM    B: Place…    AESER      Any SAE,… hierarch…         N          N   134      134    <fn>                   stat_2
15    ARM    B: Place…    AESER      Any SAE,… hierarch…         p          % 0.754       75    <fn>                   stat_2
16    ARM    C: Combi…    AESER      Any SAE,… hierarch…         n          n    99       99    <fn>                   stat_3
17    ARM    C: Combi…    AESER      Any SAE,… hierarch…         N          N   132      132    <fn>                   stat_3
18    ARM    C: Combi…    AESER      Any SAE,… hierarch…         p          %  0.75       75    <fn>                   stat_3


[[2]]
[[2]]$tbl_hierarchical
{cards} data frame: 27 x 15
   group1 group1_level group2 group2_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                <NA>                   ARM      A: Drug X categori…         n          n   104      104       0                   stat_1
2    <NA>                <NA>                   ARM      A: Drug X categori…         N          N   304      304       0                   stat_1
3    <NA>                <NA>                   ARM      A: Drug X categori…         p          % 0.342     34.2    <fn>                   stat_1
4    <NA>                <NA>                   ARM      B: Place… categori…         n          n   101      101       0                   stat_2
5    <NA>                <NA>                   ARM      B: Place… categori…         N          N   304      304       0                   stat_2
6    <NA>                <NA>                   ARM      B: Place… categori…         p          % 0.332     33.2    <fn>                   stat_2
7    <NA>                <NA>                   ARM      C: Combi… categori…         n          n    99       99       0                   stat_3
8    <NA>                <NA>                   ARM      C: Combi… categori…         N          N   304      304       0                   stat_3
9    <NA>                <NA>                   ARM      C: Combi… categori…         p          % 0.326     32.6    <fn>                   stat_3
10    ARM    A: Drug X  SEXGR    Sex, n (…   SEXGR1              F hierarch…         n          n    61       61    <fn>                   stat_1
11    ARM    A: Drug X  SEXGR    Sex, n (…   SEXGR1              F hierarch…         N          N   104      104    <fn>                   stat_1
12    ARM    A: Drug X  SEXGR    Sex, n (…   SEXGR1              F hierarch…         p          % 0.587       59    <fn>                   stat_1
13    ARM    B: Place…  SEXGR    Sex, n (…   SEXGR1              F hierarch…         n          n    64       64    <fn>                   stat_2
14    ARM    B: Place…  SEXGR    Sex, n (…   SEXGR1              F hierarch…         N          N   101      101    <fn>                   stat_2
15    ARM    B: Place…  SEXGR    Sex, n (…   SEXGR1              F hierarch…         p          % 0.634       63    <fn>                   stat_2
16    ARM    C: Combi…  SEXGR    Sex, n (…   SEXGR1              F hierarch…         n          n    50       50    <fn>                   stat_3
17    ARM    C: Combi…  SEXGR    Sex, n (…   SEXGR1              F hierarch…         N          N    99       99    <fn>                   stat_3
18    ARM    C: Combi…  SEXGR    Sex, n (…   SEXGR1              F hierarch…         p          % 0.505       51    <fn>                   stat_3
19    ARM    A: Drug X  SEXGR    Sex, n (…   SEXGR1              M hierarch…         n          n    43       43    <fn>                   stat_1
20    ARM    A: Drug X  SEXGR    Sex, n (…   SEXGR1              M hierarch…         N          N   104      104    <fn>                   stat_1
21    ARM    A: Drug X  SEXGR    Sex, n (…   SEXGR1              M hierarch…         p          % 0.413       41    <fn>                   stat_1
22    ARM    B: Place…  SEXGR    Sex, n (…   SEXGR1              M hierarch…         n          n    37       37    <fn>                   stat_2
23    ARM    B: Place…  SEXGR    Sex, n (…   SEXGR1              M hierarch…         N          N   101      101    <fn>                   stat_2
24    ARM    B: Place…  SEXGR    Sex, n (…   SEXGR1              M hierarch…         p          % 0.366       37    <fn>                   stat_2
25    ARM    C: Combi…  SEXGR    Sex, n (…   SEXGR1              M hierarch…         n          n    49       49    <fn>                   stat_3
26    ARM    C: Combi…  SEXGR    Sex, n (…   SEXGR1              M hierarch…         N          N    99       99    <fn>                   stat_3
27    ARM    C: Combi…  SEXGR    Sex, n (…   SEXGR1              M hierarch…         p          % 0.495       49    <fn>                   stat_3


[[3]]
[[3]]$tbl_hierarchical
{cards} data frame: 27 x 15
   group1 group1_level group2 group2_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                <NA>                   ARM      A: Drug X categori…         n          n   104      104       0                   stat_1
2    <NA>                <NA>                   ARM      A: Drug X categori…         N          N   304      304       0                   stat_1
3    <NA>                <NA>                   ARM      A: Drug X categori…         p          % 0.342     34.2    <fn>                   stat_1
4    <NA>                <NA>                   ARM      B: Place… categori…         n          n   101      101       0                   stat_2
5    <NA>                <NA>                   ARM      B: Place… categori…         N          N   304      304       0                   stat_2
6    <NA>                <NA>                   ARM      B: Place… categori…         p          % 0.332     33.2    <fn>                   stat_2
7    <NA>                <NA>                   ARM      C: Combi… categori…         n          n    99       99       0                   stat_3
8    <NA>                <NA>                   ARM      C: Combi… categori…         N          N   304      304       0                   stat_3
9    <NA>                <NA>                   ARM      C: Combi… categori…         p          % 0.326     32.6    <fn>                   stat_3
10    ARM    A: Drug X  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         n          n   104      104    <fn>                   stat_1
11    ARM    A: Drug X  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         N          N   104      104    <fn>                   stat_1
12    ARM    A: Drug X  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         p          %     1      100    <fn>                   stat_1
13    ARM    B: Place…  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         n          n   101      101    <fn>                   stat_2
14    ARM    B: Place…  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         N          N   101      101    <fn>                   stat_2
15    ARM    B: Place…  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         p          %     1      100    <fn>                   stat_2
16    ARM    C: Combi…  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         n          n    98       98    <fn>                   stat_3
17    ARM    C: Combi…  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         N          N    99       99    <fn>                   stat_3
18    ARM    C: Combi…  AGEGR    Age grou…   AGEGR1      >=17 to … hierarch…         p          %  0.99       99    <fn>                   stat_3
19    ARM    A: Drug X  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         n          n     0        0    <fn>                   stat_1
20    ARM    A: Drug X  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         N          N   104      104    <fn>                   stat_1
21    ARM    A: Drug X  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         p          %     0        0    <fn>                   stat_1
22    ARM    B: Place…  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         n          n     0        0    <fn>                   stat_2
23    ARM    B: Place…  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         N          N   101      101    <fn>                   stat_2
24    ARM    B: Place…  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         p          %     0        0    <fn>                   stat_2
25    ARM    C: Combi…  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         n          n     1        1    <fn>                   stat_3
26    ARM    C: Combi…  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         N          N    99       99    <fn>                   stat_3
27    ARM    C: Combi…  AGEGR    Age grou…   AGEGR1          65-74 hierarch…         p          %  0.01      1.0    <fn>                   stat_3


[[4]]
[[4]]$tbl_hierarchical
{cards} data frame: 63 x 15
   group1 group1_level group2 group2_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                <NA>                   ARM      A: Drug X categori…         n          n   104      104       0                   stat_1
2    <NA>                <NA>                   ARM      A: Drug X categori…         N          N   304      304       0                   stat_1
3    <NA>                <NA>                   ARM      A: Drug X categori…         p          % 0.342     34.2    <fn>                   stat_1
4    <NA>                <NA>                   ARM      B: Place… categori…         n          n   101      101       0                   stat_2
5    <NA>                <NA>                   ARM      B: Place… categori…         N          N   304      304       0                   stat_2
6    <NA>                <NA>                   ARM      B: Place… categori…         p          % 0.332     33.2    <fn>                   stat_2
7    <NA>                <NA>                   ARM      C: Combi… categori…         n          n    99       99       0                   stat_3
8    <NA>                <NA>                   ARM      C: Combi… categori…         N          N   304      304       0                   stat_3
9    <NA>                <NA>                   ARM      C: Combi… categori…         p          % 0.326     32.6    <fn>                   stat_3
10    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         n          n    52       52    <fn>                   stat_1
11    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         N          N   104      104    <fn>                   stat_1
12    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         p          %   0.5       50    <fn>                   stat_1
13    ARM    B: Place… RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         n          n    46       46    <fn>                   stat_2
14    ARM    B: Place… RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         N          N   101      101    <fn>                   stat_2
15    ARM    B: Place… RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         p          % 0.455       46    <fn>                   stat_2
16    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         n          n    51       51    <fn>                   stat_3
17    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         N          N    99       99    <fn>                   stat_3
18    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1          ASIAN hierarch…         p          % 0.515       52    <fn>                   stat_3
19    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         n          n    23       23    <fn>                   stat_1
20    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         N          N   104      104    <fn>                   stat_1
21    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         p          % 0.221       22    <fn>                   stat_1
22    ARM    B: Place… RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         n          n    23       23    <fn>                   stat_2
23    ARM    B: Place… RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         N          N   101      101    <fn>                   stat_2
24    ARM    B: Place… RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         p          % 0.228       23    <fn>                   stat_2
25    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         n          n    26       26    <fn>                   stat_3
26    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         N          N    99       99    <fn>                   stat_3
27    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1      BLACK OR… hierarch…         p          % 0.263       26    <fn>                   stat_3
28    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         n          n    22       22    <fn>                   stat_1
29    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         N          N   104      104    <fn>                   stat_1
30    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         p          % 0.212       21    <fn>                   stat_1
31    ARM    B: Place… RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         n          n    22       22    <fn>                   stat_2
32    ARM    B: Place… RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         N          N   101      101    <fn>                   stat_2
33    ARM    B: Place… RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         p          % 0.218       22    <fn>                   stat_2
34    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         n          n    17       17    <fn>                   stat_3
35    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         N          N    99       99    <fn>                   stat_3
36    ARM    C: Combi… RACEGR    Race, n(…  RACEGR1          WHITE hierarch…         p          % 0.172       17    <fn>                   stat_3
37    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1      AMERICAN… hierarch…         n          n     7        7    <fn>                   stat_1
38    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1      AMERICAN… hierarch…         N          N   104      104    <fn>                   stat_1
39    ARM    A: Drug X RACEGR    Race, n(…  RACEGR1      AMERICAN… hierarch…         p          % 0.067      6.7    <fn>                   stat_1
40    ARM    B: Place… RACEGR    Race, n(…  RACEGR1      AMERICAN… hierarch…         n          n     8        8    <fn>                   stat_2
ℹ 23 more rows
ℹ Use `print(n = ...)` to see more rows


[[5]]
[[5]]$tbl_hierarchical
{cards} data frame: 63 x 15
   group1 group1_level   group2 group2_level  variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                  <NA>                    ARM      A: Drug X categori…         n          n   104      104       0                   stat_1
2    <NA>                  <NA>                    ARM      A: Drug X categori…         N          N   304      304       0                   stat_1
3    <NA>                  <NA>                    ARM      A: Drug X categori…         p          % 0.342     34.2    <fn>                   stat_1
4    <NA>                  <NA>                    ARM      B: Place… categori…         n          n   101      101       0                   stat_2
5    <NA>                  <NA>                    ARM      B: Place… categori…         N          N   304      304       0                   stat_2
6    <NA>                  <NA>                    ARM      B: Place… categori…         p          % 0.332     33.2    <fn>                   stat_2
7    <NA>                  <NA>                    ARM      C: Combi… categori…         n          n    99       99       0                   stat_3
8    <NA>                  <NA>                    ARM      C: Combi… categori…         N          N   304      304       0                   stat_3
9    <NA>                  <NA>                    ARM      C: Combi… categori…         p          % 0.326     32.6    <fn>                   stat_3
10    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         n          n    52       52    <fn>                   stat_1
11    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         N          N   104      104    <fn>                   stat_1
12    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         p          %   0.5       50    <fn>                   stat_1
13    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         n          n    46       46    <fn>                   stat_2
14    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         N          N   101      101    <fn>                   stat_2
15    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         p          % 0.455       46    <fn>                   stat_2
16    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         n          n    51       51    <fn>                   stat_3
17    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         N          N    99       99    <fn>                   stat_3
18    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1          ASIAN hierarch…         p          % 0.515       52    <fn>                   stat_3
19    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         n          n    23       23    <fn>                   stat_1
20    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         N          N   104      104    <fn>                   stat_1
21    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         p          % 0.221       22    <fn>                   stat_1
22    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         n          n    23       23    <fn>                   stat_2
23    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         N          N   101      101    <fn>                   stat_2
24    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         p          % 0.228       23    <fn>                   stat_2
25    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         n          n    26       26    <fn>                   stat_3
26    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         N          N    99       99    <fn>                   stat_3
27    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1      BLACK OR… hierarch…         p          % 0.263       26    <fn>                   stat_3
28    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         n          n    22       22    <fn>                   stat_1
29    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         N          N   104      104    <fn>                   stat_1
30    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         p          % 0.212       21    <fn>                   stat_1
31    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         n          n    22       22    <fn>                   stat_2
32    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         N          N   101      101    <fn>                   stat_2
33    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         p          % 0.218       22    <fn>                   stat_2
34    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         n          n    17       17    <fn>                   stat_3
35    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         N          N    99       99    <fn>                   stat_3
36    ARM    C: Combi… ETHNICGR    Ethnicit… ETHNICGR1          WHITE hierarch…         p          % 0.172       17    <fn>                   stat_3
37    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1      AMERICAN… hierarch…         n          n     7        7    <fn>                   stat_1
38    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1      AMERICAN… hierarch…         N          N   104      104    <fn>                   stat_1
39    ARM    A: Drug X ETHNICGR    Ethnicit… ETHNICGR1      AMERICAN… hierarch…         p          % 0.067      6.7    <fn>                   stat_1
40    ARM    B: Place… ETHNICGR    Ethnicit… ETHNICGR1      AMERICAN… hierarch…         n          n     8        8    <fn>                   stat_2
ℹ 23 more rows
ℹ Use `print(n = ...)` to see more rows

Source Code
---
title: FDA Table 21
subtitle: Overview of Serious Adverse Events by Demographic Subgroup, Safety Population, Pooled Analysis (or Trial X)
categories: [table, FDA, safety, adverse events]
---

::: panel-tabset
## Table Preview

```{r img, echo=FALSE, fig.align='center', out.width='60%'}
knitr::include_graphics("result.png")
```

## Setup

```{r setup, message=FALSE}
# Load libraries & data -------------------------------------
library(dplyr)
library(cards)
library(gtsummary)

adae <- random.cdisc.data::cadae
adsl <- random.cdisc.data::cadsl

adsl <- adsl |>
  filter(SAFFL == "Y")

data <- adae |>
  filter(
    SAFFL == "Y",
    TRTEMFL == "Y",
    AESER == "Y"
  ) |>
  mutate(
    SEXGR = "Sex, n (%)",
    SEXGR1 = as.factor(SEX),
    AGEGR = "Age group, years, n(%)",
    AGEGR1 = factor(
      dplyr::case_when(
        AGE >= 17 & AGE < 65 ~ ">=17 to <65",
        AGE >= 65 & AGE < 75 ~ "65-74",
        AGE >= 75 ~ ">=75"
      ),
      levels = c(">=17 to <65", "65-74", ">=75")
    ),
    RACEGR = "Race, n(%)",
    RACEGR1 = as.factor(RACE),
    ETHNICGR = "Ethnicity, n(%)",
    ETHNICGR1 = as.factor(RACE)
  )

data_any_sae <- adae |>
  filter(AESER == "Y") |>
  mutate(AESER = "Any SAE, n(%)")
```

## Build Table

```{r tbl, message=FALSE, warning=FALSE}
tbl_any_sae <- tbl_hierarchical(
  data = data_any_sae,
  denominator = adsl,
  id = "USUBJID",
  by = "ARM",
  variables = "AESER",
  statistic = ~"{n} ({p}%)",
  label = AESER ~ "Characteristic"
)

tbl_sex <- tbl_hierarchical(
  data = data,
  denominator = data_any_sae |> slice_head(by = c(USUBJID)),
  id = "USUBJID",
  by = "ARM",
  variables = c(SEXGR, SEXGR1),
  include = SEXGR1,
  statistic = ~"{n}/{N} ({p}%)"
)

tbl_agegr1 <- tbl_hierarchical(
  data = data,
  denominator = data_any_sae |> slice_head(by = c(USUBJID)),
  id = "USUBJID",
  by = "ARM",
  variables = c(AGEGR, AGEGR1),
  include = AGEGR1,
  statistic = ~"{n}/{N} ({p}%)"
)

tbl_race <- tbl_hierarchical(
  data = data,
  denominator = data_any_sae |> slice_head(by = c(USUBJID)),
  id = "USUBJID",
  by = "ARM",
  variables = c(RACEGR, RACEGR1),
  include = RACEGR1,
  statistic = ~"{n}/{N} ({p}%)"
)

tbl_ethnic <- tbl_hierarchical(
  data = data,
  denominator = data_any_sae |> slice_head(by = c(USUBJID)),
  id = "USUBJID",
  by = "ARM",
  variables = c(ETHNICGR, ETHNICGR1),
  include = ETHNICGR1,
  statistic = ~"{n}/{N} ({p}%)"
)

tbl <- list(tbl_any_sae, tbl_sex, tbl_agegr1, tbl_race, tbl_ethnic) |>
  tbl_stack() |>
  modify_column_indent("label", rows = !(variable %in% c("..ard_hierarchical_overall..", "AESER", "SEXGR", "AGEGR", "RACEGR", "ETHNICGR"))) |>
  remove_footnote_header(columns = everything())

tbl
```

## Build ARD

```{r ard, message=FALSE, warning=FALSE, results='hide'}
ard <- gather_ard(tbl)

ard
```

```{r, echo=FALSE}
# Print ARD
withr::local_options(width = 9999)
print(ard, columns = "all", n = 40, na.print = NULL)
```


```{r eval=FALSE, include=FALSE}
# Run chunk locally to generate image file
gt::gtsave(as_gt(tbl), filename = "result.png")
```

```{r img, echo=FALSE, fig.align='center', out.width='60%'}
```
:::
 
  • This website as well as code examples are licensed under the Apache License, Version 2.0.
Cookie Preferences