Estou tentando obter uma tabela como a abaixo usando GTSUMMARY
. Observe que há 2 camadas de recuo necessárias.
Eu tentei usar tbl_hierarchical
para conseguir isso, pois não consigo encontrar uma maneira de tbl_summary
criar várias camadas de indentação. Abaixo está meu código:
# Denominator
adsl.d <- pharmaverseadam::adsl %>%
select(c(USUBJID, TRT01A))
#Table body input data
adsl1 <- pharmaverseadam::adsl %>%
select(c(USUBJID, TRT01A, RFSTDTC, EOSSTT, DTHFL)) %>%
mutate(
TOTPART = 'TOTAL NUMBER OF PARTICIPANTS',
RANDFL = 'RANDOMIZED',
ITTFL = 'INTENT-TO-TREAT',
SAFFL = if_else(!is.na(RFSTDTC) & is.na(DTHFL), 'SAFETY', NA_character_),
COMPLFL = case_when(
EOSSTT == 'COMPLETED' ~ 'Y',
EOSSTT == 'DISCONTINUED' ~ 'N'),
DSREAS = case_when(
grepl('Screen', TRT01A) ~ TRT01A,
DTHFL == 'Y' ~ 'Death',
EOSSTT == 'DISCONTINUED' & substr(RFSTDTC, 1, 4) == '2012' ~ 'Adverse event',
EOSSTT == 'DISCONTINUED' & substr(RFSTDTC, 1, 4) == '2013' ~ 'Withdrawal by subject',
EOSSTT == 'DISCONTINUED' & substr(RFSTDTC, 1, 4) == '2014' ~ 'Lost to Follow-up')
) %>%
set_variable_labels(DSREAS = "PRIMARY REASON FOR DISCONTINUATION")
#Manipulate data to create ITT & SAF counts
adsl2 <- adsl1 %>%
select(c(USUBJID, TRT01A, TOTPART, ITTFL, SAFFL)) %>%
pivot_longer(
cols = c("ITTFL", "SAFFL"),
names_to = "EOSSTT",
values_to = "RANDFL")
adsl <- bind_rows(adsl1, adsl2) %>%
filter(!grepl('Screen', TRT01A)) %>%
set_variable_labels(DSREAS = "PRIMARY REASON FOR DISCONTINUATION")
# Generate hierarchical summary
tbl.hrch <- adsl %>% tbl_hierarchical(
variables = c(TOTPART, RANDFL, EOSSTT),
id = USUBJID,
denominator = adsl.d,
by = TRT01A,
include = c(TOTPART, RANDFL, EOSSTT),
statistic = c(TOTPART, RANDFL, EOSSTT) ~ c("{n} ({p})"),
digits = list(RANDFL = c(1, 2),
EOSSTT = c(1, 1))
) %>% add_overall(
last = TRUE,
col_label = "**Overall** \nN = {style_number(N)}",
)
tbl.hrch$table_body <- tbl.hrch$table_body %>%
mutate(across(starts_with('stat_'), ~ if_else(variable == 'TOTPART', NA, .))) %>%
filter(!(variable == 'EOSSTT' & label %in% c('ITTFL', 'SAFFL')))
O tbl.hrch
me fornece o corpo da tabela pretendido. Tenho duas perguntas.
- Existe uma maneira de conseguir isso sem manipular os
tbl.hrch$table_body
metadados? - Podemos personalizar o tipo de variáveis em vez de alfabético? Eu obtenho a linha ITT primeiro, o que não é a intenção do shell.
Obrigado por qualquer ajuda!