Nothing
context("Combine summary statistics tables")
library(plyr)
test_that("An error is generated if summary tables without variable names are combined", {
# In case a single variable is included,
# the variable name is not included in the table
# so tables cannot be combined
dataCont <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2)
)
summaryTableCont <- computeSummaryStatisticsTable(
data = dataCont,
var = "AVAL"
)
dataCat <- data.frame(
USUBJID = c("1", "2"),
GROUP = c("A", "B")
)
summaryTableCat <- computeSummaryStatisticsTable(
data = dataCat,
var = "GROUP"
)
expect_error(
combine(summaryTableCont, summaryTableCat),
"Summary tables cannot be combined"
)
})
test_that("Summary tables with only one variable and with similar layout are correctly combined", {
data <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2),
AVAL2 = c(2, 3)
)
summaryTable1 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL",
varLabInclude = TRUE
)
summaryTable2 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL2",
varLabInclude = TRUE
)
summaryTableCombine <- combine(summaryTable1, summaryTable2)
expect_s3_class(summaryTableCombine, "summaryTable")
# check that content without total is correct
expect_equal(
subset(summaryTableCombine, !isTotal),
rbind(
subset(summaryTable1, !isTotal),
subset(summaryTable2, !isTotal)
),
check.attributes = FALSE
)
# only one row should be retained for the total
expect_equal(
subset(summaryTableCombine, isTotal),
subset(summaryTable1, isTotal),
check.attributes = FALSE
)
## check attributes
expect_equal(
attr(summaryTableCombine, "summaryTable")[["rowVar"]],
"variable"
)
expect_equal(
attr(summaryTableCombine, "summaryTable")[["statsVar"]],
attr(summaryTable1, "summaryTable")[["statsVar"]]
)
})
test_that("Summary tables with a variable to summarize, row and column variables and with similar layout are correctly combined", {
data <- data.frame(
USUBJID = c("1", "2", "1", "2"),
PARAM = c("a", "a", "b", "b"),
TRT = c("A", "B", "A", "B"),
AVAL = c(1, 2 ,3, 4),
AVAL2 = c(4, 3 , 2, 1),
stringsAsFactors = FALSE
)
summaryTable1 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL", varLabInclude = TRUE,
colVar = "TRT",
rowVar = "PARAM"
)
summaryTable2 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL2", varLabInclude = TRUE,
colVar = "TRT",
rowVar = "PARAM"
)
summaryTableCombine <- combine(summaryTable1, summaryTable2)
expect_s3_class(summaryTableCombine, "summaryTable")
# check that content without total is correct
expect_equal(
subset(summaryTableCombine, !isTotal),
rbind.fill(subset(summaryTable1, !isTotal),
subset(summaryTable2, !isTotal)),
check.attributes = FALSE
)
# only one row should be retained for the total
expect_equal(
subset(summaryTableCombine, isTotal),
subset(summaryTable1, isTotal),
check.attributes = FALSE
)
## check attributes
expect_equal(
attr(summaryTableCombine, "summaryTable")[["rowVar"]],
c("PARAM", "variable")
)
expect_equal(
attr(summaryTableCombine, "summaryTable")[["colVar"]],
"TRT"
)
expect_equal(
attr(summaryTableCombine, "summaryTable")[["statsVar"]],
attr(summaryTable1, "summaryTable")[["statsVar"]]
)
})
test_that("Summary tables with a categorical and with a continuous variable are successfully combined", {
dataCont <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2)
)
summaryTableCont <- computeSummaryStatisticsTable(
data = dataCont,
var = "AVAL",
varLabInclude = TRUE
)
dataCat <- data.frame(
USUBJID = c("1", "2"),
GROUP = c("A", "B")
)
summaryTableCat <- computeSummaryStatisticsTable(
data = dataCat,
var = "GROUP",
varLabInclude = TRUE
)
summaryTableCombine <- combine(summaryTableCont, summaryTableCat)
# check for the table with categorical variable
# that initial content is retained
summaryTableCCat <- subset(summaryTableCombine, !isTotal & variable == "GROUP")
expect_equal(
subset(summaryTableCCat, select = colnames(summaryTableCat)),
subset(summaryTableCat, !isTotal),
check.attributes = FALSE
)
# and extra columns for other table is filled with NA
summaryTableCCatExtra <- subset(summaryTableCCat,
select = setdiff(colnames(summaryTableCCat),
colnames(summaryTableCat)
))
expect_true(all(is.na(summaryTableCCatExtra)))
# check for the table with continuous variable
# that initial content is retained
summaryTableCCont <- subset(summaryTableCombine, !isTotal & variable == "AVAL")
expect_equal(
subset(summaryTableCCont, select = colnames(summaryTableCont)),
subset(summaryTableCont, !isTotal),
check.attributes = FALSE
)
# and extra columns for other table is filled with NA
summaryTableCContExtra <- subset(summaryTableCCont,
select = setdiff(colnames(summaryTableCCont),
colnames(summaryTableCont)
))
expect_true(all(is.na(summaryTableCContExtra)))
# only one row should be retained for the total
expect_equal(
subset(summaryTableCombine, isTotal)[, colnames(summaryTableCat)],
subset(summaryTableCat, isTotal),
check.attributes = FALSE
)
## check attributes
expect_equal(
attr(summaryTableCombine, "summaryTable")[["rowVar"]],
c("variable", "variableGroup")
)
expect_setequal(
attr(summaryTableCombine, "summaryTable")[["statsVar"]],
c(
attr(summaryTableCat, "summaryTable")[["statsVar"]],
attr(summaryTableCont, "summaryTable")[["statsVar"]]
)
)
})
test_that("The origin of the table is correctly included in the combined table as row", {
data <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2),
AVAL2 = c(2, 3)
)
summaryTable1 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL",
varLabInclude = TRUE
)
summaryTable2 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL2",
varLabInclude = TRUE
)
summaryTableCombine <- combine(summaryTable1, summaryTable2,
combineVar = "Version", combineDir = "row")
expect_true("Version" %in% colnames(summaryTableCombine))
# check that input table are correctly saved in correct combine var
summaryTableCombineWthtTotal <- subset(summaryTableCombine, !isTotal)
expect_equal(
subset(summaryTableCombineWthtTotal, Version == 1, select = -Version),
subset(summaryTable1, !isTotal),
check.attributes = FALSE
)
expect_equal(
subset(summaryTableCombineWthtTotal, Version == 2, select = -Version),
subset(summaryTable2, !isTotal),
check.attributes = FALSE
)
## check attributes
expect_equal(
attr(summaryTableCombine, "summaryTable")$rowVar,
c("Version", "variable")
)
})
test_that("The table label is correctly included in the combined table", {
data <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2),
AVAL2 = c(2, 3)
)
summaryTable1 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL",
varLabInclude = TRUE
)
summaryTable2 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL2",
varLabInclude = TRUE
)
summaryTableCombine <- combine(
`old batch` = summaryTable1,
`new batch` = summaryTable2,
combineVar = "Version",
combineDir = "row"
)
expect_true("Version" %in% colnames(summaryTableCombine))
# check that input table are correctly saved in correct combine var
summaryTableCombineWthtTotal <- subset(summaryTableCombine, !isTotal)
expect_equal(
subset(summaryTableCombineWthtTotal, Version == "old batch", select = -Version),
subset(summaryTable1, !isTotal),
check.attributes = FALSE
)
expect_equal(
subset(summaryTableCombineWthtTotal, Version == "new batch", select = -Version),
subset(summaryTable2, !isTotal),
check.attributes = FALSE
)
})
test_that("The origin of the table is correctly included in the combined table as column", {
data <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2),
AVAL2 = c(2, 3)
)
summaryTable1 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL",
varLabInclude = TRUE
)
summaryTable2 <- computeSummaryStatisticsTable(
data = data,
var = "AVAL2",
varLabInclude = TRUE
)
summaryTableCombine <- combine(summaryTable1, summaryTable2,
combineVar = "Version", combineDir = "col")
expect_true("Version" %in% colnames(summaryTableCombine))
# check that input table are correctly saved in correct combine var
summaryTableCombineWthtTotal <- subset(summaryTableCombine, !isTotal)
expect_equal(
subset(summaryTableCombineWthtTotal, Version == 1, select = -Version),
subset(summaryTable1, !isTotal),
check.attributes = FALSE
)
expect_equal(
subset(summaryTableCombineWthtTotal, Version == 2, select = -Version),
subset(summaryTable2, !isTotal),
check.attributes = FALSE
)
## check attributes
expect_equal(
attr(summaryTableCombine, "summaryTable")$colVar,
"Version"
)
})
test_that("The column total is discarded in the combined table if it differs between tables", {
data1 <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2)
)
summaryTable1 <- computeSummaryStatisticsTable(
data = data1,
var = "AVAL",
varLabInclude = TRUE
)
data2 <- data.frame(
USUBJID = c("1", "2", "3"),
AVAL2 = c(1, 2, 3)
)
summaryTable2 <- computeSummaryStatisticsTable(
data = data2,
var = "AVAL2",
varLabInclude = TRUE
)
expect_warning(
summaryTableCombine <- combine(summaryTable1, summaryTable2),
"column totals differ"
)
expect_false(all(summaryTableCombine$isTotal))
})
test_that("The column total is discarded if the tables contain different column variables", {
dataTRT <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2),
TRT = c("A", "B")
)
summaryTableTRT <- computeSummaryStatisticsTable(
data = dataTRT,
var = "AVAL",
colVar = "TRT",
varLabInclude = TRUE
)
dataVISIT <- data.frame(
USUBJID = c("1", "2"),
AVAL = c(1, 2),
VISIT = c("Baseline", "Week 4")
)
summaryTableVISIT <- computeSummaryStatisticsTable(
data = dataVISIT,
var = "AVAL",
colVar = "VISIT",
varLabInclude = TRUE
)
expect_warning(
summaryTableCombine <- combine(summaryTableTRT, summaryTableVISIT),
"column totals are discarded"
)
expect_false(all(summaryTableCombine$isTotal))
})
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.