ARM A ARM B ARM C
(N=134) (N=134) (N=132)
———————————————————————————————————————————————————————————————————————————————————————
Patients with LLT event (%) 20 (14.9%) 9 (6.7%) 9 (6.8%)
Patients without LLT event (%) 114 (85.1%) 125 (93.3%) 123 (93.2%)
Time to 1st LLT Event (DAYS)
Median NA NA 728.0
95% CI NA (724.0, NA) NA
25% and 75%-ile 618.0, NA 724.0, NA 728.0, 728.0
Range 1.0 to 731.0 {1} 1.0 to 728.0 {1} 1.0 to 728.0 {2}
Unstratified Analysis
p-value (log-rank) 0.0295 0.1687
Hazard Ratio 0.43 0.58
95% CI (0.19, 0.94) (0.26, 1.27)
———————————————————————————————————————————————————————————————————————————————————————
{1} - Censored observations: range minimum & maximum
{2} - Censored observation: range minimum
———————————————————————————————————————————————————————————————————————————————————————
Experimental use!
WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.
ARM A ARM B ARM C
(N=134) (N=134) (N=132)
———————————————————————————————————————————————————————————————————————————————————————
Patients with LLT event (%) 20 (14.9%) 9 (6.7%) 9 (6.8%)
Patients without LLT event (%) 114 (85.1%) 125 (93.3%) 123 (93.2%)
Time to 1st LLT Event (DAYS)
Median NA NA 728.0
95% CI NA (724.0, NA) NA
25% and 75%-ile 618.0, NA 724.0, NA 728.0, 728.0
Range 1.0 to 731.0 {1} 1.0 to 728.0 {1} 1.0 to 728.0 {2}
———————————————————————————————————————————————————————————————————————————————————————
{1} - Censored observations: range minimum & maximum
{2} - Censored observation: range minimum
———————————————————————————————————————————————————————————————————————————————————————
Experimental use!
WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.
ARM A ARM B ARM C
(N=134) (N=134) (N=132)
———————————————————————————————————————————————————————————————————————————————————————
Patients with LLT event (%) 20 (14.9%) 9 (6.7%) 9 (6.8%)
Patients without LLT event (%) 114 (85.1%) 125 (93.3%) 123 (93.2%)
Time to 1st LLT Event (DAYS)
Median NA NA 728.0
95% CI NA (724.0, NA) NA
25% and 75%-ile 618.0, NA 724.0, NA 728.0, 728.0
Range 1.0 to 731.0 {1} 1.0 to 728.0 {1} 1.0 to 728.0 {2}
Unstratified Analysis
p-value (log-rank) 0.0295 0.1687
Hazard Ratio 0.43 0.58
95% CI (0.19, 0.94) (0.26, 1.27)
Stratified By: RACE, SEX
p-value (log-rank) 0.0858 0.1605
Hazard Ratio 0.51 0.57
95% CI (0.23, 1.12) (0.26, 1.26)
———————————————————————————————————————————————————————————————————————————————————————
{1} - Censored observations: range minimum & maximum
{2} - Censored observation: range minimum
———————————————————————————————————————————————————————————————————————————————————————
Experimental use!
WebR is a tool allowing you to run R code in the web browser. Modify the code below and click run to see the results. Alternatively, copy the code and click here to open WebR in a new tab.
Code
library(tern)library(dplyr)adsl <- random.cdisc.data::cadsladaette <- random.cdisc.data::cadaette# Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels.adsl <-df_explicit_na(adsl)adaette <-df_explicit_na(adaette)adsl_safl <- dplyr::filter(adsl, .data$SAFFL =="Y")anl <- adaette %>% dplyr::filter( SAFFL =="Y", PARAMCD =="HYSTTEUL" ) %>% dplyr::mutate(AVAL = .data$AVAL * dplyr::case_when( # convert to days, if possible .data$AVALU =="WEEKS"~7, .data$AVALU =="MONTHS"~30.4375, .data$AVALU =="YEARS"~365,TRUE~1 ),AVALU =factor(dplyr::case_when( .data$AVALU %in%c("WEEKS", "MONTHS", "YEARS") ~factor("DAYS"),TRUE~ .data$AVALU ), levels ="DAYS"),is_event = CNSR ==0, # this will be a LLT eventevent_grp =factor( dplyr::case_when( CNSR ==0~"Patients with LLT event (%)", CNSR ==1~"Patients without LLT event (%)" ),levels =c("Patients with LLT event (%)","Patients without LLT event (%)" ) ) )
library(teal.modules.clinical)## Data reproducible codedata <-teal_data()data <-within(data, {library(dplyr) ADSL <- random.cdisc.data::cadsl ADAETTE <- random.cdisc.data::cadaette# Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <-df_explicit_na(ADSL) ADAETTE <-df_explicit_na(ADAETTE) ADSL <-filter(ADSL, .data$SAFFL =="Y") ADAETTE <-filter(ADAETTE, .data$SAFFL =="Y")})datanames <-c("ADSL", "ADAETTE")datanames(data) <- datanamesjoin_keys(data) <- default_cdisc_join_keys[datanames]## Reusable Configuration For ModulesADSL <- data[["ADSL"]]ADAETTE <- data[["ADAETTE"]]arm_ref_comp <-list(ACTARMCD =list(ref ="ARM B",comp =c("ARM A", "ARM C") ),ARM =list(ref ="B: Placebo",comp =c("A: Drug X", "C: Combination") ))## Setup Appapp <-init(data = data,modules =modules(tm_t_tte(label ="Time To LLT Event Table",dataname ="ADAETTE",arm_var =choices_selected(variable_choices(data[["ADSL"]], c("ARM", "ARMCD", "ACTARMCD")),"ARM" ),arm_ref_comp = arm_ref_comp,paramcd =choices_selected(value_choices(data[["ADAETTE"]], "PARAMCD", "PARAM"),"HYSTTEUL" ),strata_var =choices_selected(variable_choices(data[["ADSL"]], c("RACE", "SEX")),c("RACE", "SEX") ),time_points =choices_selected(0, NULL),event_desc_var =choices_selected("EVNTDESC", "EVNTDESC", fixed =TRUE) ) ))shinyApp(app$ui, app$server)
Experimental use!
shinylive allow you to modify to run shiny application entirely in the web browser. Modify the code below and click re-run the app to see the results. The performance is slighly worse and some of the features (e.g. downloading) might not work at all.
#| '!! shinylive warning !!': |#| shinylive does not work in self-contained HTML documents.#| Please set `embed-resources: false` in your metadata.#| standalone: true#| viewerHeight: 800#| editorHeight: 200#| components: [viewer, editor]#| layout: vertical# -- WEBR HELPERS --options(webr_pkg_repos = c("r-universe" = "https://insightsengineering.r-universe.dev", getOption("webr_pkg_repos")))# -- APP CODE --library(teal.modules.clinical)## Data reproducible codedata <- teal_data()data <- within(data, { library(dplyr) ADSL <- random.cdisc.data::cadsl ADAETTE <- random.cdisc.data::cadaette # Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels. ADSL <- df_explicit_na(ADSL) ADAETTE <- df_explicit_na(ADAETTE) ADSL <- filter(ADSL, .data$SAFFL == "Y") ADAETTE <- filter(ADAETTE, .data$SAFFL == "Y")})datanames <- c("ADSL", "ADAETTE")datanames(data) <- datanamesjoin_keys(data) <- default_cdisc_join_keys[datanames]## Reusable Configuration For ModulesADSL <- data[["ADSL"]]ADAETTE <- data[["ADAETTE"]]arm_ref_comp <- list( ACTARMCD = list( ref = "ARM B", comp = c("ARM A", "ARM C") ), ARM = list( ref = "B: Placebo", comp = c("A: Drug X", "C: Combination") ))## Setup Appapp <- init( data = data, modules = modules( tm_t_tte( label = "Time To LLT Event Table", dataname = "ADAETTE", arm_var = choices_selected( variable_choices(data[["ADSL"]], c("ARM", "ARMCD", "ACTARMCD")), "ARM" ), arm_ref_comp = arm_ref_comp, paramcd = choices_selected( value_choices(data[["ADAETTE"]], "PARAMCD", "PARAM"), "HYSTTEUL" ), strata_var = choices_selected( variable_choices(data[["ADSL"]], c("RACE", "SEX")), c("RACE", "SEX") ), time_points = choices_selected(0, NULL), event_desc_var = choices_selected("EVNTDESC", "EVNTDESC", fixed = TRUE) ) ))shinyApp(app$ui, app$server)