library(repfun)
library(dplyr)
library(tibble)
datdir <- file.path(gsub("\\","/",tempdir(),fixed=TRUE),"datdir")
dir.create(datdir,showWarnings=FALSE)
repfun::copydata(datdir)
outdir <- file.path(gsub("\\","/",tempdir(),fixed=TRUE),"outdir")
dir.create(outdir,showWarnings=FALSE)
#===================================
# Set up the reporting environment.
#===================================
setup <- function(tlfid){
myenv <- repfun::rs_setup(
D_DATADATE=Sys.Date(),
D_DSPLYNUM=tlfid,
D_FOOT1='1.) Only treatment emergent events related to lipids are displayed.',
D_FOOT2='2.) Subjects counted once in each body system & preferred term.',
D_KEEPPOPVARS=c('STUDYID','USUBJID','SAFFL'),
D_STUDYID='ABCXYZPDQ',
D_POP="SAFFL",
D_POPDATA=repfun::adsl %>%
dplyr::filter(SAFFL =='Y') %>%
dplyr::mutate(TRT01AN=ifelse(TRT01A=='Placebo',1,
ifelse(TRT01A=='Xanomeline Low Dose',2,3))) %>%
repfun::ru_labels(varlabels=
list('TRT01AN'='Actual Treatment for Period 01 (n)')),
D_POPLBL="Safety",
D_SUBJID=c("STUDYID","USUBJID"),
D_TITLE1=paste0('Table ',tlfid,': Summary of Treatment Emergent Adverse Events'),
D_OUTFILE=paste0(outdir,"/t_ru_list_",tlfid,".rtf"),
D_PGMPTH="/path/to/code/ru_list.R",
R_DDDATA=paste0(outdir,'/t_ru_list_',tlfid,'.rds'),
R_ADAMDATA=datdir,
RetEnv=TRUE)
return(myenv)
}
#============================================
# Process ADAE - derive counts and percents.
#============================================
rfenv <- setup(1)
aesum <- repfun::ru_freq(rfenv$adamdata$adae.rda() %>% dplyr::select(-SAFFL) %>%
repfun::ru_getdata(rfenv$G_POPDATA, c("STUDYID", "USUBJID"),
keeppopvars=c("TRT01AN", "TRT01A")),
dsetindenom=rfenv$G_POPDATA,
countdistinctvars=c('STUDYID','USUBJID'),
groupbyvarsnumer=c('TRT01AN','TRT01A','AEBODSYS','AEDECOD'),
anyeventvars = c('AEBODSYS','AEDECOD'),
anyeventvalues = c('ANY EVENT','ANY EVENT'),
groupbyvarsdenom=c('TRT01AN'),
resultstyle="NUMERPCT",
totalforvar=c('TRT01AN'),
totalid=99,
totaldecode='Total',
codedecodevarpairs=c("TRT01AN", "TRT01A"),
varcodelistpairs=c(""),
codelistnames=list(),
resultpctdps=0) %>%
dplyr::arrange(TRT01AN,TRT01A,AEBODSYS,tt_summarylevel,AEDECOD,NUMERCNT,DENOMCNT) %>%
repfun::ru_align("tt_result")
#==========================================================================
# Table 2: Summary of Adverse Events using NOWIDOWVAR (remove SOCs that
# will not fit on 1 page with 10pt font)
#==========================================================================
rfenv <- setup(2)
SOCterms <- aesum %>% dplyr::distinct(AEBODSYS,AEDECOD)
SOCcnts <- table(SOCterms$AEBODSYS)
repfun::ru_list(aesum %>% dplyr::filter(!(AEBODSYS %in% names(SOCcnts[SOCcnts>=20]))),
columns=c('AEBODSYS','AEDECOD','tt_01','tt_02','tt_03','tt_99'),
nowidowvar='AEBODSYS',
widths=c(5.5,4.5,1.75,1.9,1.9,1.75),
skipvars=c('AEBODSYS'),
centrevars=c('tt_01','tt_02','tt_03','tt_99'),
ordervars=c('AEBODSYS','tt_summarylevel','AEDECOD'),
noprintvars=c('tt_summarylevel'),
denormyn='Y',
varsToDenorm=c('tt_result'),
groupByVars=c('AEBODSYS','tt_summarylevel','AEDECOD'),
acrossVar="TRT01AN",
acrossVarLabel="TRT01A",
acrossColVarPrefix='tt_',
dddatasetlabel=paste0('DD Dataframe for AE Table ',rfenv$G_DSPLYNUM),
lpp=24)
Run the code above in your browser using DataLab