--- title: "Generate-Summary-Statistics" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Generate-Summary-Statistics} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Vignette Build Datetime ```{r built} message(paste0('Datetime: ',Sys.Date(),':',Sys.time())) ``` ## Load Libraries ```{r setup, message=FALSE} library(repfun) library(dplyr) ``` ## Set Up the Reporting Environment ```{r envir} tmpdr <- tempdir() datdir <- file.path(gsub("\\","/",tmpdr,fixed=TRUE),"datdir") dir.create(datdir,showWarnings=FALSE) repfun::copydata(datdir) repfun::rs_setup(D_POPDATA=repfun::adsl %>% dplyr::filter(SAFFL =='Y'), D_SUBJID=c("STUDYID","USUBJID"), R_ADAMDATA=datdir) ``` ## Update ADSL and ADVS ```{r update, out.width="70%"} repfun:::rfenv$G_POPDATA %>% dplyr::mutate(TRT01AN=ifelse(TRT01A=='Placebo',1,ifelse(TRT01A=='Xanomeline Low Dose',2,3))) -> G_POPDATA attr(G_POPDATA$TRT01AN,"label") <- 'Actual Treatment for Period 01 (n)' repfun:::rfenv$adamdata$advs.rda() %>% dplyr::filter(ANL01FL=='Y') %>% dplyr::mutate(TRT01AN=ifelse(TRT01A=='Placebo',1,ifelse(TRT01A=='Xanomeline Low Dose',2,3))) %>% dplyr::filter(!is.na(AVISITN) & (DTYPE=='AVERAGE')) -> advs2 attr(advs2$TRT01AN,"label") <- 'Actual Treatment for Period 01 (n)' ``` ## Generate Summary Statistics for Baseline Characteristics ```{r sumstats1} repfun::ru_sumstats(G_POPDATA, analysisvars=c("AGE","TRTDURD"), groupbyvars=c("STUDYID","TRT01AN"), codedecodevarpairs=c("TRT01AN", "TRT01A"), totalforvar="TRT01AN", totalid=99, totaldecode="Total", statsinrowsyn = "Y", analysisvardps=list("AGE"=1,"TRTDURD"=2), statslist=c("n", "mean", "median", "sd", "min", "max")) %>% dplyr::arrange(tt_avid, TRT01AN,tt_svid) %>% dplyr::select(-tt_result_num) -> basechars ``` ## Display the Results for Baseline Characteristics ```{r results1} lbls <- sapply(basechars,function(x){attr(x,"label")}) knitr::kable(head(basechars,10), col.names=paste(names(lbls),lbls,sep=" "), caption = "Summary Statistics for Baseline Characteristics") ``` ## Generate Summary Statistics for Vital Signs with Constant Precision ```{r sumstats2} repfun::ru_sumstats(advs2, analysisvars=c("AVAL"), groupbyvars=c("STUDYID","TRT01AN","PARAMCD","AVISITN"), codedecodevarpairs=c("TRT01AN","TRT01A","PARAMCD","PARAM","AVISITN","AVISIT"), totalforvar="TRT01AN", totalid=99, totaldecode="Total", statsinrowsyn = "Y", analysisvardps=1, statslist=c("n","mean","median","sd","min","max")) %>% dplyr::arrange(TRT01AN,PARAMCD,AVISITN, tt_svid) %>% dplyr::select(-c('tt_avnm','tt_avid','tt_result_num')) -> vtlsigns ``` ## Display the Results for Vital Signs with Constant Precision ```{r results2} lbls <- sapply(vtlsigns,function(x){attr(x,"label")}) knitr::kable(head(vtlsigns,10), col.names=paste(names(lbls),lbls,sep=" "), caption = "Summary Statistics for Vital Signs with Constant Precision") ``` ## Generate Summary Statistics for Vital Signs with Varying Precision ```{r sumstats3} decodes <- advs2 %>% distinct(PARAMCD, PARAM) dcodelst <- split(decodes$PARAM, decodes$PARAMCD) advs2 %>% dplyr::select(STUDYID,USUBJID,TRT01AN,TRT01A,PARAMCD,AVISITN,AVISIT,AVAL) %>% dplyr::arrange(USUBJID,TRT01AN,TRT01A,AVISITN,AVISIT) %>% dplyr::group_by(USUBJID,TRT01AN,TRT01A,AVISITN,AVISIT) %>% tidyr::pivot_wider(names_from=PARAMCD, values_from=AVAL) -> advs2_t advs2_t <- repfun::ru_labels(advs2_t,varlabels=dcodelst) repfun::ru_sumstats(advs2_t, analysisvars=c("BMI","BSA","DIABP","MAP","PULSE","SYSBP","TEMP","WEIGHT"), groupbyvars=c("STUDYID","TRT01AN","AVISITN"), codedecodevarpairs=c("TRT01AN","TRT01A","AVISITN","AVISIT"), totalforvar="TRT01AN", totalid=99, totaldecode="Total", statsinrowsyn = "Y", analysisvardps=list("BMI"=1,"BSA"=2,"DIABP"=3,"MAP"=4,"PULSE"=1,"SYSBP"=2, "TEMP"=3,"WEIGHT"=4), statslist=c("n","mean","median","sd","min","max")) %>% dplyr::left_join(decodes %>% dplyr::mutate(tt_avnm=PARAMCD),by='tt_avnm') %>% dplyr::arrange(tt_avid, TRT01AN, AVISITN, tt_svid) %>% dplyr::select(-c('tt_result_num','tt_avnm')) %>% dplyr::arrange(PARAMCD,TRT01AN,AVISITN) -> vtlsigns_t ``` ## Display the Results for Vital Signs with Constant Precision ```{r results3} lbls <- sapply(vtlsigns_t,function(x){attr(x,"label")}) knitr::kable(head(vtlsigns_t,10), col.names=paste(names(lbls),lbls,sep=" "), caption = "Summary Statistics for Vital Signs with Varying Precision") ```