# Layout for Baseline Prevalence of NAbslyt_bl <-basic_table(show_colcounts =TRUE) %>%split_cols_by("ACTARM",split_fun = custom_column_split_fun ) %>%count_patients_with_flags("USUBJID",flag_variables ="ADABLPFL",.stats ="count",var_labels ="Baseline Prevalence of ADAs",show_labels ="visible",table_names ="t1" ) %>%count_patients_with_flags("USUBJID",flag_variables ="PADABLPFL",table_names ="t2",.indent_mods =1L,var_labels ="a",show_labels ="hidden" ) %>%count_patients_with_flags("USUBJID",flag_variables ="NADABLPFL",.stats ="count",show_labels ="hidden",.indent_mods =1L,table_names ="t3" )# Layout for incidence of NAbslyt_pb <-basic_table(show_colcounts =TRUE) %>%split_cols_by("ACTARM",split_fun = custom_column_split_fun ) %>%count_patients_with_flags("USUBJID",flag_variables ="ADPBLPFL",.stats ="count",var_labels ="Incidence of Treatment Emergent ADAs",show_labels ="visible",table_names ="tb1" ) %>%count_patients_with_flags("USUBJID",flag_variables ="PTEFL",table_names ="tb2",.indent_mods =1L,show_labels ="hidden" ) %>%count_patients_with_flags("USUBJID",flag_variables =c("TIFL", "TEFL"),.stats ="count",table_names ="tb3",.indent_mods =2L,show_labels ="hidden" ) %>%count_patients_with_flags("USUBJID",flag_variables ="NTEFL",table_names ="tb4",.indent_mods =1L,show_labels ="hidden" ) %>%count_patients_with_flags("USUBJID",flag_variables ="TUFL",.stats ="count",table_names ="tb5",.indent_mods =2L,show_labels ="hidden" )result_1 <-build_table(lyt_bl, df = adab_b, alt_counts_df = adsl)result_2 <-build_table(lyt_pb, df = adab_pb, alt_counts_df = adsl)# Combine tables.result_1@col_info <- result_2@col_inforesult <-rbind(result_1, result_2)main_title(result) <-paste("Baseline Prevalence and Incidence of Treatment Emergent ADA")main_footer(result) <-"ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient = a patient with an ADA assay result from a baseline sample(s) Post-baseline evaluable patient = a patient with an ADA assay result from at least one post-baseline sample Number of patients positive for Treatment Emergent ADA = the number (and percentage) of post-baseline evaluable patients determined to have treatment-induced ADA or treatment-enhanced ADA during the study period. Treatment-induced ADA = a patient with negative or missing baseline ADA result(s) and at least one positive post-baseline ADA result. Treatment-enhanced ADA = a patient with positive ADA result at baseline who has one or more post-baseline titer results that are at least 0.60 t.u. greater than the baseline titer result. Number of patients negative for Treatment Emergent ADA = number of post-baseline evaluable patients with negative or missing baseline ADA result(s) and all negative post-baseline results, or a patient who is treatment unaffected. Treatment unaffected = A post-baseline evaluable patient with a positive ADA result at baseline and (a) where all post-baseline titer results are less than 0.60 t.u. greater than the baseline titer result, OR (b) where all post-baseline results are negative or missing. For any positive sample with titer result less than the minimum reportable titer or any positive sample where a titer cannot be obtained, titer value is imputed as equal to the minimum reportable titer."result
Baseline Prevalence and Incidence of Treatment Emergent ADA
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
A: Drug X C: Combination All Drug X B: Placebo All Patients
(N=134) (N=132) (N=266) (N=134) (N=400)
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
Baseline Prevalence of ADAs
Baseline evaluable patients 134 132 266 0 266
Patient with a positive sample at baseline 63 (47.0%) 64 (48.5%) 127 (47.7%) 0 127 (47.7%)
Patient with no positive samples at baseline 71 68 139 0 139
Incidence of Treatment Emergent ADAs
Post-baseline evaluable patients 134 132 266 0 266
Patient positive for Treatment Emergent ADA 0 0 0 0 0
Treatment-induced ADA 0 0 0 0 0
Treatment-enhanced ADA 0 0 0 0 0
Patient negative for Treatment Emergent ADA 0 0 0 0 0
Treatment unaffected 0 0 0 0 0
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
ADA = Anti-Drug Antibodies (is also referred to as ATA, or Anti-Therapeutic Antibodies) Baseline evaluable patient = a patient with an ADA assay result from a baseline sample(s)
Post-baseline evaluable patient = a patient with an ADA assay result from at least one post-baseline sample Number of patients positive for Treatment Emergent
ADA = the number (and percentage) of post-baseline evaluable patients determined to have treatment-induced ADA or treatment-enhanced ADA during the study period.
Treatment-induced ADA = a patient with negative or missing baseline ADA result(s) and at least one positive post-baseline ADA result.
Treatment-enhanced ADA = a patient with positive ADA result at baseline who has one or more post-baseline titer results that are at least 0.60 t.u. greater than the baseline titer result.
Number of patients negative for Treatment Emergent ADA = number of post-baseline evaluable patients with negative or missing baseline ADA result(s) and all negative post-baseline results, or a patient who is treatment unaffected.
Treatment unaffected = A post-baseline evaluable patient with a positive ADA result at baseline and (a) where all post-baseline titer results are less than 0.60 t.u. greater than the baseline titer result, OR (b) where all post-baseline results are negative or missing.
For any positive sample with titer result less than the minimum reportable titer or any positive sample where a titer cannot be obtained, titer value is imputed as equal to the minimum reportable titer.
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)library(tibble)adsl <- random.cdisc.data::cadsladab <- random.cdisc.data::cadab# Order needed for the columns is c(1, 3, 4, 2, 5)reorder_facets <-function(splret, spl, fulldf, ...) { ord <-c(1, 3, 4, 2, 5)make_split_result( splret$values[ord], splret$datasplit[ord], splret$labels[ord] )}# Create a custom split function for adding the new columns (facets) and sorting themcustom_column_split_fun <-make_split_fun(post =list(add_combo_facet("all_X",label ="All Drug X",levels =c("A: Drug X", "C: Combination") ),add_combo_facet("all_pt",label ="All Patients",levels =c("A: Drug X", "B: Placebo", "C: Combination") ), reorder_facets ))# Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels.adsl <-df_explicit_na(adsl)adab <- adab %>%filter(PARCAT1 =="A: Drug X Antibody") %>%select(-ARRLT, -NRRLT)# Baseline Ptsadab_b <-df_explicit_na(adab) %>%filter( ABLFL =="Y", ADABLPFL =="Y", PARAM %in%c("ADA interpreted per sample result") ) %>%select(-PARAMCD, -AVALC, -AVALU) %>% tidyr::pivot_wider(names_from = PARAM,values_from = AVAL ) %>%mutate_at(c("ADA interpreted per sample result"), as.logical ) %>%mutate(ADABLPFL = ADABLPFL =="Y",PADABLPFL =`ADA interpreted per sample result`=="TRUE",NADABLPFL =`ADA interpreted per sample result`=="FALSE" ) %>%var_relabel(ADABLPFL ="Baseline evaluable patients",PADABLPFL ="Patient with a positive sample at baseline",NADABLPFL ="Patient with no positive samples at baseline" )# Post Baseline Treatment Enhanced NAb positive Ptsadab_pb <-df_explicit_na(adab) %>%filter( ABLFL !="Y", ADPBLPFL =="Y", PARAM %in%c("ADA interpreted per sample result","Treatment Emergent - Positive","Treatment induced ADA","Treatment enhanced ADA","Treatment Emergent - Negative","Treatment unaffected" ) ) %>%select(-PARAMCD, -AVALC, -AVALU) %>%unique() %>% tidyr::pivot_wider(names_from = PARAM,values_from = AVAL ) %>%mutate(across(any_of(c("ADA interpreted per sample result", "Treatment Emergent - Positive","Treatment induced ADA", "Treatment enhanced ADA","Treatment Emergent - Negative", "Treatment unaffected" )), as.logical ) ) %>%mutate(ADPBLPFL = ADPBLPFL =="Y",PTEFL =if (exists("Treatment Emergent - Positive", where = .)) {`Treatment Emergent - Positive`=="TRUE" } else {FALSE },TIFL =if (exists("Treatment induced ADA", where = .)) {`Treatment induced ADA`=="TRUE" } else {FALSE },TEFL =if (exists("Treatment enhanced ADA", where = .)) {`Treatment enhanced ADA`=="TRUE" } else {FALSE },NTEFL =if (exists("Treatment Emergent - Negative", where = .)) {`Treatment Emergent - Negative`=="TRUE" } else {FALSE },TUFL =if (exists("Treatment unaffected", where = .)) {`Treatment unaffected`=="TRUE" } else {FALSE } ) %>%var_relabel(ADPBLPFL ="Post-baseline evaluable patients",PTEFL ="Patient positive for Treatment Emergent ADA",TIFL ="Treatment-induced ADA",TEFL ="Treatment-enhanced ADA",NTEFL ="Patient negative for Treatment Emergent ADA",TUFL ="Treatment unaffected" )