# Program Name: tsicm07.R# Prep Environmentlibrary(envsetup)library(tern)library(dplyr)library(rtables)library(junco)# Define script level parameters:# - Define output ID and file locationtblid <-"TSICM07"fileid <- tblidtab_titles <-get_titles_from_file(input_path ='../../_data/', tblid)string_map <- default_str_maptrtvar <-"TRT01A"popfl <-"SAFFL"codedtermvar <-"CMDECOD"combined_colspan_trt <-TRUEif (combined_colspan_trt ==TRUE) {# Set up levels and label for the required combined columns add_combo <-add_combo_facet("Combined",label ="Combined",levels =c("Xanomeline High Dose", "Xanomeline Low Dose") )# choose if any facets need to be removed - e.g remove the combined column for placebo rm_combo_from_placebo <-cond_rm_facets(facets ="Combined",ancestor_pos =NA,value =" ",split ="colspan_trt" ) mysplit <-make_split_fun(post =list(add_combo, rm_combo_from_placebo))}# Process Data:# Read in required dataadsl <- pharmaverseadamjnj::adsl %>%filter(!!rlang::sym(popfl) =="Y") %>%select(USUBJID, all_of(trtvar), all_of(popfl))adcm <- pharmaverseadamjnj::adcm %>%filter(ONTRTFL =="Y") %>%select(USUBJID, ONTRTFL, all_of(codedtermvar), starts_with("CQ")) %>%select(USUBJID, ONTRTFL, all_of(codedtermvar), ends_with("NAM"))# Work out how many CQzzNAM vars we havecqzznamvars <- adcm %>%select(starts_with("CQ"))countcqzznamvars <-length(names(cqzznamvars))# Create new variable that binds all special interest data together in vertical structuremat <-matrix(ncol =0, nrow =0)adcm_v <-data.frame(mat)for (i in1:countcqzznamvars) {if (i <10) { ix <-paste0("0", i) } else { ix <- i } cqdata <- adcm %>%mutate(cqnamvar =as.factor(!!as.name(paste0("CQ", ix, "NAM")))) %>%filter(!is.na(cqnamvar)) adcm_v <-bind_rows(adcm_v, cqdata)}# Convert medications to sentence caseadcm_v[[codedtermvar]] <-as.factor(stringr::str_to_sentence(adcm_v[[ codedtermvar]]))adsl$colspan_trt <-factor(ifelse(adsl[[trtvar]] =="Placebo", " ", "Active Study Agent"),levels =c("Active Study Agent", " "))# join data togethercm <- adcm_v %>%inner_join(., adsl, by =c("USUBJID"))if (length(adcm$ONTRTFL) ==0) { cm <- adcm_v %>%right_join(., adsl, by =c("USUBJID"))}colspan_trt_map <-create_colspan_map( adsl,non_active_grp ="Placebo",non_active_grp_span_lbl =" ",active_grp_span_lbl ="Active Study Agent",colspan_var ="colspan_trt",trt_var = trtvar)# Define layout and build table:extra_args_1 <-list(.stats ="count_unique_fraction")lyt <- rtables::basic_table(top_level_section_div =" ",show_colcounts =TRUE,colcount_format ="N=xx") %>%split_cols_by("colspan_trt",split_fun =trim_levels_to_map(map = colspan_trt_map) )if (combined_colspan_trt ==TRUE) { lyt <- lyt %>%split_cols_by(trtvar, split_fun = mysplit)} else { lyt <- lyt %>%split_cols_by(trtvar)}lyt <- lyt %>%add_overall_col("Total")if (length(adcm$ONTRTFL) ==0) { lyt <- lyt %>%analyze("ONTRTFL",afun = a_freq_j,extra_args =append( extra_args_1,list(label ="Subjects with >=1 concomitant medication") ) )}lyt <- lyt %>%split_rows_by("cqnamvar",child_labels ="hidden",split_label ="Interest Category",label_pos ="topleft",split_fun =trim_levels_in_group(codedtermvar),section_div =c(" "),indent_mod =0L ) %>%summarize_row_groups("cqnamvar",cfun = a_freq_j,extra_args = extra_args_1 ) %>%analyze(codedtermvar, afun = a_freq_j, extra_args = (extra_args_1)) %>%append_topleft(" Standardized Medication Name")result <-build_table(lyt, cm, alt_counts_df = adsl)# If there is no data remove top row and display "No data to display" textif (length(adcm$ONTRTFL) ==0) { result <-safe_prune_table( result,prune_func =remove_rows(removerowtext ="Subjects with >=1 concomitant medication" ) )}# Post-Processing step to sort by descending count on total columnif (length(adcm$ONTRTFL) !=0) { result <-sort_at_path( result,c("cqnamvar"),scorefun =jj_complex_scorefun(colpath ="Total") ) result <-sort_at_path( result,c("cqnamvar", "*", codedtermvar),scorefun =jj_complex_scorefun(colpath ="Total") )}# Add titles and footnotes:result <-set_titles(result, tab_titles)# Convert to tbl file and output tablett_to_tlgrtf(string_map = string_map, tt = result, file = fileid, orientation ="landscape")
TSICM07:Concomitant Medications of Interest; Safety Analysis Set (Study jjcs - core)
Active Study Agent
Interest Category
Xanomeline High Dose
Xanomeline Low Dose
Combined
Placebo
Total
Standardized Medication Name
N=53
N=73
N=126
N=59
N=185
Steroid
7 (13.2%)
9 (12.3%)
16 (12.7%)
1 (1.7%)
17 (9.2%)
Hydrocortisone
7 (13.2%)
9 (12.3%)
16 (12.7%)
1 (1.7%)
17 (9.2%)
Acetylsalicylic Acid
0
1 (1.4%)
1 (0.8%)
1 (1.7%)
2 (1.1%)
Acetylsalicylic acid
0
1 (1.4%)
1 (0.8%)
1 (1.7%)
2 (1.1%)
Note: Concomitant medications are defined as any therapy used on or after the same day as the first dose of study treatment [up to last dose of study treatment +xx days}, including those that started before and continue on after the first dose of study treatment.