FDA Table 07
Overview of Adverse Events, Safety Population, Pooled Analysis (or Trial X)
table
FDA
safety
adverse events
Code
# --- PART 1: Overview of serious AEs
# Assign a label to each SAE category
sae_vars <- list(
"SAE" = "AESER",
"Death" = "AESDTH",
"Life-threatening" = "AESLIFE",
"Initial or prolonged hospitalization" = "AESHOSP",
"Disability or permanent damage" = "AESDISAB",
"Congenital anomaly or birth defect" = "AESCONG",
"Other" = "AESMIE"
)
# Summarize SAEs per category
tbl_sae <-
lapply(
seq_along(sae_vars),
function(i) { # apply per category
data <- data |>
filter(.data[[sae_vars[[i]]]] == "Y") |>
mutate(!!sae_vars[[i]] := names(sae_vars)[i]) # convert flag to a meaningful value
tbl_hierarchical( # calculate rates
data = data,
variables = all_of(sae_vars[[i]]),
by = TRT01A,
id = USUBJID,
denominator = adsl,
label = sae_vars[[i]] ~ "Event"
)
}
) |>
tbl_stack() |>
modify_indent("label", rows = tbl_id1 != 1, indent = 4L)
# --- PART 2: Permanent discontinuation
disc_ae <- adae |>
filter(AEACNOTH == "SUBJECT DISCONTINUED FROM STUDY") |>
mutate(
# convert label to a more meaningful value
AEACNOTH = "AE leading to permanent discontinuation of treatment"
)
tbl_disc_ae <- tbl_hierarchical( # calculate rates
data = disc_ae,
variables = AEACNOTH,
by = TRT01A,
id = USUBJID,
denominator = adsl,
label = AEACNOTH ~ "Event"
)
# -- PART 3: Dose modification
dose_mod_ae <- adae |>
filter(AEACN %in% c("DRUG INTERRUPTED", "DOSE REDUCED", "DOSE RATE REDUCED", "DOSE INCREASED")) |>
mutate(
AEACN = case_when( # convert to meaningful labels
AEACN == "DRUG INTERRUPTED" ~ "AE leading to interruption of study drug",
AEACN == "DOSE REDUCED" ~ "AE leading to reduction of study drug",
AEACN == "DOSE RATE REDUCED" ~ "AE leading to dose delay of study drug",
AEACN == "DOSE INCREASED" ~ "Other",
.default = "Other"
)
)
tbl_dose_mod_ae <- tbl_hierarchical( # calculate rates
data = dose_mod_ae,
denominator = adsl,
id = "USUBJID",
by = "TRT01A",
variables = "AEACN",
label = list(AEACN ~ "Event", ..ard_hierarchical_overall.. = "AE leading to action taken of treatment"),
overall_row = TRUE
) |>
modify_indent(columns = label, rows = variable == "AEACN", indent = 4L)
# -- PART 4: Any AE
tbl_any_ae <- tbl_hierarchical(
data = adae |> mutate(AESEV = factor(.data$AESEV, ordered = TRUE)),
variables = AESEV,
by = TRT01A,
id = USUBJID,
denominator = adsl,
label = list(AESEV ~ "Event", ..ard_hierarchical_overall.. = "Any AE"),
overall_row = TRUE
) |>
modify_indent(columns = label, rows = variable == "AESEV", indent = 4L)
# Put it all together
tbl <- list(tbl_sae, tbl_disc_ae, tbl_dose_mod_ae, tbl_any_ae) |>
tbl_stack() |>
modify_header(label = "**Adverse Event Category**")
tbl
[[1]]
[[1]][[1]]
[[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> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X AESER SAE hierarch… n n 104 104 <fn> stat_1
11 TRT01A A: Drug X AESER SAE hierarch… N N 134 134 <fn> stat_1
12 TRT01A A: Drug X AESER SAE hierarch… p % 0.776 78 <fn> stat_1
13 TRT01A B: Place… AESER SAE hierarch… n n 101 101 <fn> stat_2
14 TRT01A B: Place… AESER SAE hierarch… N N 134 134 <fn> stat_2
15 TRT01A B: Place… AESER SAE hierarch… p % 0.754 75 <fn> stat_2
16 TRT01A C: Combi… AESER SAE hierarch… n n 99 99 <fn> stat_3
17 TRT01A C: Combi… AESER SAE hierarch… N N 132 132 <fn> stat_3
18 TRT01A C: Combi… AESER SAE hierarch… p % 0.75 75 <fn> stat_3
[[1]][[2]]
[[1]][[2]]$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> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X AESDTH Death hierarch… n n 76 76 <fn> stat_1
11 TRT01A A: Drug X AESDTH Death hierarch… N N 134 134 <fn> stat_1
12 TRT01A A: Drug X AESDTH Death hierarch… p % 0.567 57 <fn> stat_1
13 TRT01A B: Place… AESDTH Death hierarch… n n 70 70 <fn> stat_2
14 TRT01A B: Place… AESDTH Death hierarch… N N 134 134 <fn> stat_2
15 TRT01A B: Place… AESDTH Death hierarch… p % 0.522 52 <fn> stat_2
16 TRT01A C: Combi… AESDTH Death hierarch… n n 75 75 <fn> stat_3
17 TRT01A C: Combi… AESDTH Death hierarch… N N 132 132 <fn> stat_3
18 TRT01A C: Combi… AESDTH Death hierarch… p % 0.568 57 <fn> stat_3
[[1]][[3]]
[[1]][[3]]$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> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X AESLIFE Life-thr… hierarch… n n 37 37 <fn> stat_1
11 TRT01A A: Drug X AESLIFE Life-thr… hierarch… N N 134 134 <fn> stat_1
12 TRT01A A: Drug X AESLIFE Life-thr… hierarch… p % 0.276 28 <fn> stat_1
13 TRT01A B: Place… AESLIFE Life-thr… hierarch… n n 36 36 <fn> stat_2
14 TRT01A B: Place… AESLIFE Life-thr… hierarch… N N 134 134 <fn> stat_2
15 TRT01A B: Place… AESLIFE Life-thr… hierarch… p % 0.269 27 <fn> stat_2
16 TRT01A C: Combi… AESLIFE Life-thr… hierarch… n n 49 49 <fn> stat_3
17 TRT01A C: Combi… AESLIFE Life-thr… hierarch… N N 132 132 <fn> stat_3
18 TRT01A C: Combi… AESLIFE Life-thr… hierarch… p % 0.371 37 <fn> stat_3
[[1]][[4]]
[[1]][[4]]$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> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X AESHOSP Initial … hierarch… n n 75 75 <fn> stat_1
11 TRT01A A: Drug X AESHOSP Initial … hierarch… N N 134 134 <fn> stat_1
12 TRT01A A: Drug X AESHOSP Initial … hierarch… p % 0.56 56 <fn> stat_1
13 TRT01A B: Place… AESHOSP Initial … hierarch… n n 70 70 <fn> stat_2
14 TRT01A B: Place… AESHOSP Initial … hierarch… N N 134 134 <fn> stat_2
15 TRT01A B: Place… AESHOSP Initial … hierarch… p % 0.522 52 <fn> stat_2
16 TRT01A C: Combi… AESHOSP Initial … hierarch… n n 78 78 <fn> stat_3
17 TRT01A C: Combi… AESHOSP Initial … hierarch… N N 132 132 <fn> stat_3
18 TRT01A C: Combi… AESHOSP Initial … hierarch… p % 0.591 59 <fn> stat_3
[[1]][[5]]
[[1]][[5]]$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> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X AESDISAB Disabili… hierarch… n n 66 66 <fn> stat_1
11 TRT01A A: Drug X AESDISAB Disabili… hierarch… N N 134 134 <fn> stat_1
12 TRT01A A: Drug X AESDISAB Disabili… hierarch… p % 0.493 49 <fn> stat_1
13 TRT01A B: Place… AESDISAB Disabili… hierarch… n n 62 62 <fn> stat_2
14 TRT01A B: Place… AESDISAB Disabili… hierarch… N N 134 134 <fn> stat_2
15 TRT01A B: Place… AESDISAB Disabili… hierarch… p % 0.463 46 <fn> stat_2
16 TRT01A C: Combi… AESDISAB Disabili… hierarch… n n 72 72 <fn> stat_3
17 TRT01A C: Combi… AESDISAB Disabili… hierarch… N N 132 132 <fn> stat_3
18 TRT01A C: Combi… AESDISAB Disabili… hierarch… p % 0.545 55 <fn> stat_3
[[1]][[6]]
[[1]][[6]]$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> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X AESCONG Congenit… hierarch… n n 70 70 <fn> stat_1
11 TRT01A A: Drug X AESCONG Congenit… hierarch… N N 134 134 <fn> stat_1
12 TRT01A A: Drug X AESCONG Congenit… hierarch… p % 0.522 52 <fn> stat_1
13 TRT01A B: Place… AESCONG Congenit… hierarch… n n 64 64 <fn> stat_2
14 TRT01A B: Place… AESCONG Congenit… hierarch… N N 134 134 <fn> stat_2
15 TRT01A B: Place… AESCONG Congenit… hierarch… p % 0.478 48 <fn> stat_2
16 TRT01A C: Combi… AESCONG Congenit… hierarch… n n 73 73 <fn> stat_3
17 TRT01A C: Combi… AESCONG Congenit… hierarch… N N 132 132 <fn> stat_3
18 TRT01A C: Combi… AESCONG Congenit… hierarch… p % 0.553 55 <fn> stat_3
[[1]][[7]]
[[1]][[7]]$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> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X AESMIE Other hierarch… n n 70 70 <fn> stat_1
11 TRT01A A: Drug X AESMIE Other hierarch… N N 134 134 <fn> stat_1
12 TRT01A A: Drug X AESMIE Other hierarch… p % 0.522 52 <fn> stat_1
13 TRT01A B: Place… AESMIE Other hierarch… n n 84 84 <fn> stat_2
14 TRT01A B: Place… AESMIE Other hierarch… N N 134 134 <fn> stat_2
15 TRT01A B: Place… AESMIE Other hierarch… p % 0.627 63 <fn> stat_2
16 TRT01A C: Combi… AESMIE Other hierarch… n n 83 83 <fn> stat_3
17 TRT01A C: Combi… AESMIE Other hierarch… N N 132 132 <fn> stat_3
18 TRT01A C: Combi… AESMIE Other hierarch… p % 0.629 63 <fn> stat_3
[[2]]
[[2]]$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> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X AEACNOTH AE leadi… hierarch… n n 75 75 <fn> stat_1
11 TRT01A A: Drug X AEACNOTH AE leadi… hierarch… N N 134 134 <fn> stat_1
12 TRT01A A: Drug X AEACNOTH AE leadi… hierarch… p % 0.56 56 <fn> stat_1
13 TRT01A B: Place… AEACNOTH AE leadi… hierarch… n n 73 73 <fn> stat_2
14 TRT01A B: Place… AEACNOTH AE leadi… hierarch… N N 134 134 <fn> stat_2
15 TRT01A B: Place… AEACNOTH AE leadi… hierarch… p % 0.545 54 <fn> stat_2
16 TRT01A C: Combi… AEACNOTH AE leadi… hierarch… n n 83 83 <fn> stat_3
17 TRT01A C: Combi… AEACNOTH AE leadi… hierarch… N N 132 132 <fn> stat_3
18 TRT01A C: Combi… AEACNOTH AE leadi… hierarch… p % 0.629 63 <fn> stat_3
[[3]]
[[3]]$tbl_hierarchical
{cards} data frame: 54 x 13
group1 group1_level variable variable_level context stat_name stat_label stat stat_fmt fmt_fun warning error gts_column
1 <NA> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X ..ard_hierarchical_overall.. TRUE hierarch… n n 71 71 <fn> stat_1
ℹ 44 more rows
ℹ Use `print(n = ...)` to see more rows
[[4]]
[[4]]$tbl_hierarchical
{cards} data frame: 45 x 13
group1 group1_level variable variable_level context stat_name stat_label stat stat_fmt fmt_fun warning error gts_column
1 <NA> TRT01A A: Drug X tabulate n n 134 134 0 stat_1
2 <NA> TRT01A A: Drug X tabulate N N 400 400 0 stat_1
3 <NA> TRT01A A: Drug X tabulate p % 0.335 33.5 <fn> stat_1
4 <NA> TRT01A B: Place… tabulate n n 134 134 0 stat_2
5 <NA> TRT01A B: Place… tabulate N N 400 400 0 stat_2
6 <NA> TRT01A B: Place… tabulate p % 0.335 33.5 <fn> stat_2
7 <NA> TRT01A C: Combi… tabulate n n 132 132 0 stat_3
8 <NA> TRT01A C: Combi… tabulate N N 400 400 0 stat_3
9 <NA> TRT01A C: Combi… tabulate p % 0.33 33.0 <fn> stat_3
10 TRT01A A: Drug X ..ard_hierarchical_overall.. TRUE hierarch… n n 122 122 <fn> stat_1
ℹ 35 more rows
ℹ Use `print(n = ...)` to see more rows