Nothing
## ----optionsChunks, echo = FALSE, cache = FALSE-------------------------------
library(knitr)
tmpdir <- tempdir()
knitr::opts_chunk$set(
message = FALSE,
# stop document execution if error (not the default)
error = FALSE, # stop-on-error
fig.align = "center",
fig.path = file.path(tmpdir, "./figures_vignette/"),
echo = TRUE
)
## ----loadPackages-------------------------------------------------------------
library(clinUtils)
# packages required for the examples in the vignette
library(ggplot2)
library(pander)
library(htmltools)
library(plyr)
## ----loadData-----------------------------------------------------------------
pathExampleDatasets <- list.files(
path = system.file("extdata", "cdiscpilot01", "SDTM", package = "clinUtils"),
pattern = "*.xpt",
full.names = TRUE
)
data <- loadDataADaMSDTM(files = pathExampleDatasets)
# A list is returned, each separated file is accessible via data$[fileName]
pander(head(data$DM, 2))
pander(head(data$LB, 2))
pander(head(data$AE, 2))
# Access labels for all variables
labelVars <- attr(data, "labelVars")
head(labelVars)
# Access label for a particular variable:
labelVars["USUBJID"]
## ----exampleDataset-ADaM------------------------------------------------------
# load data
data(dataADaMCDISCP01)
dataADaM <- dataADaMCDISCP01
names(dataADaM)
pander(head(dataADaM$ADSL, 2))
pander(head(dataADaM$ADLBC, 2))
pander(head(dataADaM$ADAE, 2))
# and variable labels
labelVarsADaM <- attr(dataADaM, "labelVars")
head(labelVarsADaM)
## ----exampleDataset-SDTM------------------------------------------------------
# load data
data(dataSDTMCDISCP01)
dataSDTM <- dataSDTMCDISCP01
names(dataSDTM)
pander(head(dataSDTM$DM, 2))
pander(head(dataSDTM$LB, 2))
pander(head(dataSDTM$AE, 2))
# and variable labels
labelVarsSDTM <- attr(dataSDTM, "labelVars")
head(labelVarsSDTM)
## ----getLabelVar--------------------------------------------------------------
# variable label is extracted from 'labelVars'
getLabelVar(var = "AEDECOD", labelVars = labelVars)
## ----getLabelParamcd----------------------------------------------------------
# For ADaM dataset
getLabelParamcd(paramcd = "CHOL", data = dataADaM$ADLB)
getLabelParamcd(paramcd = "BILI", data = dataADaM$ADLB)
# For SDTM dataset
getLabelParamcd(paramcd = "CHOL", data = dataSDTM$LB, paramcdVar = "LBTESTCD", paramVar = "LBTEST")
getLabelParamcd(paramcd = "BILI", data = dataSDTM$LB, paramcdVar = "LBTESTCD", paramVar = "LBTEST")
## ----palette-show-------------------------------------------------------------
print(colorPaletteNRIND)
print(shapePaletteNRIND)
## ----palette-plot, fig.height = 8---------------------------------------------
plot(
x = seq_along(colorPaletteNRIND),
col = colorPaletteNRIND,
bg = colorPaletteNRIND,
pch = shapePaletteNRIND
)
text(
x = seq_along(colorPaletteNRIND),
labels = names(colorPaletteNRIND), pos = 3
)
title("Palette for CDISC normal reference range indicator")
## ----getPaletteCDISC----------------------------------------------------------
dataPlot <- subset(dataSDTM$LB, LBTEST == "Leukocytes")
colorPalette <- getPaletteCDISC(x = dataPlot$LBNRIND, var = "NRIND", type = "color")
print(colorPalette)
shapePalette <- getPaletteCDISC(x = dataPlot$LBNRIND, var = "NRIND", type = "shape")
print(shapePalette)
# visualize profile over time
gg <- ggplot(data = dataPlot) +
geom_point(aes(x = LBDY, y = LBSTRESN,
color = LBNRIND, fill = LBNRIND, shape = LBNRIND)) +
ggtitle("Evolution of Leukocytes actual value over time")
print(gg)
# use 'standard' symbols/colors
# ('limits' is only required if the categories are not already ordered in LBNRIND)
gg +
scale_color_manual(values = colorPalette, limits = names(colorPalette)) +
scale_fill_manual(values = colorPalette, limits = names(colorPalette)) +
scale_shape_manual(values = shapePalette, limits = names(colorPalette))
## ----palettes-----------------------------------------------------------------
dataPlot <- subset(dataADaM$ADLB, PARAMCD == "CHOL")
# extract palettes
colorPalette <- getColorPalette(x = dataPlot$USUBJID)
shapePalette <- getShapePalette(x = dataPlot$USUBJID)
linetypePalette <- getLinetypePalette(x = dataPlot$USUBJID)
# create the plot
ggplot(data = dataPlot, aes(x = ADY, y = CHG, color = USUBJID)) +
geom_point(aes(shape = USUBJID)) +
geom_line(aes(linetype = USUBJID, group = USUBJID)) +
scale_color_manual(values = colorPalette) +
scale_shape_manual(values = shapePalette) +
scale_linetype_manual(values = linetypePalette) +
labs(x = "Relative day", y = "Change from baseline",
title = "Profile plot of cholesterol change from baseline")
## ----roundHalfUp--------------------------------------------------------------
# round up
roundHalfUp(c(0.45, 0.55), 1)
# versus R default:
round(c(0.45, 0.55), 1)
## ----createDataAE-------------------------------------------------------------
dataTEAE <- subset(dataADaM$ADAE, SAFFL == "Y" & TRTEMFL == "Y")
# set column names to labels
labelVarsTEAE <- getLabelVar(
var = colnames(dataTEAE),
labelVars = labelVarsADaM
)
colnamesTEAE <- setNames(names(labelVarsTEAE), labelVarsTEAE)
dataTEAE <- dataTEAE[order(dataTEAE$AESOC), ]
## ----getClinDT, eval = rmarkdown::pandoc_available()--------------------------
getClinDT(
dataTEAE,
colnames = colnamesTEAE,
rowGroupVar = c("AESOC"),
barVar = "AGE",
barRange = c(0, 100),
caption = "Listing of treatment-emergent adverse events on the safety analysis set"
)
## ----compareTables------------------------------------------------------------
# Build example dataset with treatment-emergent adverse events
# of multiple batches
varsListing <- c("USUBJID", "AESOC", "AEDECOD", "ASTDT", "AESEV", "AEOUT")
dataTEAEListing <- dataTEAE[, varsListing]
# simulate removal of observations in new batch
dataTEAENew <- dataTEAE[-sample.int(n = nrow(dataTEAEListing), size = 3), ]
# simulate addition of observations in new batch
dataTEAEOld <- dataTEAE[-sample.int(n = nrow(dataTEAEListing), size = 3), ]
# simulate change of observations
dataTEAEOld[seq_len(2), "AESEV"] <- "SEVERE"
refVars <- c("USUBJID", "AESOC", "AEDECOD", "ASTDT")
tableComparison <- compareTables(
newData = dataTEAENew,
oldData = dataTEAEOld,
referenceVars = refVars,
changeableVars = setdiff(colnames(dataTEAEListing), refVars),
# parameters passed to datatable
colnames = setNames(names(labelVarsADaM), labelVarsADaM)
)
## ----compareTables-table-comparison-interactive, eval = rmarkdown::pandoc_available()----
tableComparison$`table-comparison-interactive`
## ----'lab-hist-static1', fig.cap='Barplot of chemistry measurements', fig.width=7, fig.height=4, results = 'asis', echo = FALSE----
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Chemistry\n", sep = "")
print(xList[[1]])
## ----'lab-hist-static2', fig.cap='Barplot of hematology measurements', fig.width=3, fig.height=4, results = 'asis', echo = FALSE----
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Hematology\n", sep = "")
print(xList[[2]])
## ----'lab-hist-static3', fig.cap='Barplot of urinalysis measurements', fig.width=5, fig.height=4, results = 'asis', echo = FALSE----
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Urinalysis\n", sep = "")
print(xList[[3]])
## ----figure-static-knitPrintListPlots, out.width = "100%", warning = FALSE, results = "asis"----
dataLB <- subset(dataSDTM$LB,
LBTESTCD %in% c("ALB", "ALT", "CHOL", "HCT", "KETONES", "PH")
)
dataLB$ACTARM <- dataSDTM$DM$ACTARM[match(dataLB$USUBJID, dataSDTM$DM$USUBJID)]
# create plots:
listPlotsLB <- plyr::dlply(dataLB, "LBCAT", function(data)
ggplot(data = data) +
geom_histogram(aes(fill = LBNRIND, x = ACTARM), stat = "count", position = "dodge") +
facet_wrap(~LBTEST) +
theme(axis.text.x = element_text(angle = -45, hjust = 0))
)
# n2mfrow: extract default dimensions for a specified number of plots
figDim <- plyr::dlply(dataLB, "LBCAT", function(data)
n2mfrow(length(unique(data$LBTESTCD)))
)
knitPrintListPlots(
plotsList = listPlotsLB,
generalLabel = "lab-hist-static",
type = "ggplot2",
# set caption for each figure
fig.cap = paste("Barplot of", tolower(names(listPlotsLB)), "measurements"),
# specify different dimensions
fig.width = sapply(figDim, "[[", 1) * 2 + 1, # 3 in for each plot + 1 in for the legend
fig.height = sapply(figDim, "[[", 2) * 2 + 2, # 3 in for each plot + 2 for x-axis labels
# include title before each visualization
titles = simpleCap(tolower(names(listPlotsLB))),
titleLevel = 4
)
## ----figure-interactive-creation----------------------------------------------
library(plotly)
listPlotsInteractiveLB <- sapply(listPlotsLB, function(ggplot)
ggplotly(ggplot) %>% partial_bundle()
, simplify = FALSE)
## ----figure-interactive-tagList, warning = FALSE, results = "asis", eval = rmarkdown::pandoc_available()----
tagListArgs <- mapply(list,
# section header
lapply(names(listPlotsInteractiveLB), htmltools::h4),
# interactive plots
listPlotsInteractiveLB,
SIMPLIFY = FALSE
)
tagListArgs <- unlist(tagListArgs, recursive = FALSE)
do.call(htmltools::tagList, tagListArgs)
## ----'lab-hist-interactive1', results = 'asis', echo = FALSE------------------
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Chemistry\n", sep = "")
xList[[1]]
## ----'lab-hist-interactive2', results = 'asis', echo = FALSE------------------
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Hematology\n", sep = "")
xList[[2]]
## ----'lab-hist-interactive3', results = 'asis', echo = FALSE------------------
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Urinalysis\n", sep = "")
xList[[3]]
## ----figure-interactive-knitPrintListPlots, warning = FALSE, results = "asis", eval = rmarkdown::pandoc_available()----
knitPrintListPlots(
plotsList = listPlotsInteractiveLB,
generalLabel = "lab-hist-interactive",
type = "plotly",
# include title before each visualization
titles = simpleCap(tolower(names(listPlotsInteractiveLB))),
titleLevel = 5
)
## ----'lab-listing-ft1', ft.align='center', results = 'asis', echo = FALSE-----
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Chemistry\n", sep = "")
xList[[1]]
## ----'lab-listing-ft2', ft.align='right', results = 'asis', echo = FALSE------
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Hematology\n", sep = "")
xList[[2]]
## ----'lab-listing-ft3', ft.align='left', results = 'asis', echo = FALSE-------
cat("\n", paste(rep("#", titleLevel), collapse = ""), " Urinalysis\n", sep = "")
xList[[3]]
## ----table-flextable-knitPrintListObjects, warning = FALSE, results = "asis"----
library(flextable)
listFtLB <- plyr::dlply(dataLB, "LBCAT", function(dataParcat){
flextable::flextable(data = head(dataParcat))
})
knitPrintListObjects(
xList = listFtLB,
generalLabel = "lab-listing-ft",
titles = simpleCap(tolower(names(listFtLB))),
# different alignment for each table
ft.align = c("center", "right", "left"),
titleLevel = 4
)
## ----includeSessionInfo, echo = FALSE-----------------------------------------
pander(sessionInfo())
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.