Skip to content

Commit dff6493

Browse files
committed
create make_table_33_gtsum
1 parent f8b037e commit dff6493

File tree

3 files changed

+103
-0
lines changed

3 files changed

+103
-0
lines changed

NAMESPACE

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export(make_table_22)
3131
export(make_table_32)
3232
export(make_table_32_gtsum)
3333
export(make_table_33)
34+
export(make_table_33_gtsum)
3435
export(make_table_34)
3536
export(make_table_35)
3637
export(make_table_36)

R/fda-table_33.R

+78
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,81 @@ make_table_33 <- function(advs,
7070

7171
tbl
7272
}
73+
74+
#' @describeIn make_table_33 Create FDA table 33 using functions from `gtsummary`.
75+
#'
76+
#' @return
77+
#' * `make_table_33_gtsum` returns a `gt` object
78+
#'
79+
#' @examples
80+
#' tbl <- make_table_33_gtsum(advs = advs)
81+
#' tbl
82+
#'
83+
#' @export
84+
make_table_33_gtsum <- function(advs,
85+
adsl,
86+
id_var = "USUBJID",
87+
arm_var = "ARM",
88+
saffl_var = "SAFFL",
89+
lbl_overall = NULL) {
90+
checkmate::assert_subset(c(
91+
saffl_var, "AVISITN", "PARAMCD", "AVAL", "AVALU", arm_var, id_var
92+
), names(advs))
93+
assert_flag_variables(advs, saffl_var)
94+
95+
advs_all <- advs %>%
96+
filter(
97+
.data[[saffl_var]] == "Y",
98+
AVISITN >= 1,
99+
PARAMCD %in% c("DIABP", "SYSBP")
100+
) %>%
101+
group_by(.data[[id_var]], PARAMCD) %>%
102+
mutate(
103+
MAX_DIABP = if_else(PARAMCD == "DIABP", max(AVAL), NA_real_),
104+
MAX_SYSBP = if_else(PARAMCD == "SYSBP", max(AVAL), NA_real_)
105+
) %>%
106+
ungroup() %>%
107+
mutate(
108+
SBP90 = formatters::with_label(PARAMCD == "SYSBP" & MAX_SYSBP < 90, "SBP <90"),
109+
DBP60 = formatters::with_label(PARAMCD == "DIABP" & MAX_DIABP < 60, "DBP <60")
110+
)
111+
112+
advs_diabp <- advs_all %>%
113+
filter(PARAMCD == "DIABP") %>%
114+
distinct(.data[[id_var]], .keep_all = TRUE) %>%
115+
select(all_of(id_var), DBP60, ARM, AVALU)
116+
117+
advs_sysbp <- advs_all %>%
118+
filter(PARAMCD == "SYSBP") %>%
119+
distinct(.data[[id_var]], .keep_all = TRUE) %>%
120+
select(all_of(id_var), SBP90)
121+
122+
advs_combined <-
123+
full_join(advs_diabp, advs_sysbp, by = "USUBJID") %>%
124+
select(SBP90, DBP60, ARM, AVALU)
125+
126+
avalu <- unique(advs_combined$AVALU)[1]
127+
advs_combined <- advs_combined %>% select(-AVALU)
128+
129+
tbl <- advs_combined %>%
130+
tbl_summary(
131+
by = arm_var,
132+
statistic = list(all_categorical() ~ "{n} ({p}%)"),
133+
digits = everything() ~ c(0, 1)
134+
) %>%
135+
modify_header(label ~ paste0("**Blood Pressure (", avalu, ")**")) %>%
136+
modify_header(all_stat_cols() ~ "**{level}** \nN = {n}") %>%
137+
gtsummary::modify_column_alignment(columns = all_stat_cols(), align = "right")
138+
139+
if (!is.null(lbl_overall)) {
140+
tbl <- tbl %>%
141+
add_overall(last = TRUE, col_label = paste0("**", lbl_overall, "** \n N = {n}"))
142+
}
143+
144+
tbl <- tbl %>% modify_footnote(update = everything() ~ NA)
145+
146+
gtsummary::with_gtsummary_theme(
147+
x = gtsummary::theme_gtsummary_compact(),
148+
expr = as_gt(tbl)
149+
)
150+
}

man/make_table_33.Rd

+24
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)