Nothing
context("Get set of statistics")
library(clinUtils)
test_that("The output format of formatted base and combined statistics is correct", {
type <- c(
"n", "m", "%", "%m",
"Mean", "SD", "Median", "SE", "Min", "Max",
"median (range)", "median\n(range)", "mean (se)", "mean (range)",
"n (%)", "n/N (%)", "m (%)"
)
statName <- sapply(type, identity)
statName[grep("^median|mean", type)] <- clinUtils::simpleCap(statName[grep("^median|mean", type)])
statName["mean (se)"] <- "Mean (SE)"
for(type in type){
expect_type(getStats(type = !!type), "list")
expect_length(getStats(type = !!type), 1)
expect_equal(names(getStats(type = !!type)), statName[[!!type]])
expect_type(getStats(type = !!type)[[ statName[[!!type]]]], "language")
}
})
test_that("Base count and summary statistics are correctly formatted", {
typeBase <- c("n", "m", "Mean", "SD", "Median", "SE", "Min", "Max")
statBase <- c(n = "statN", `%` = "statPercN", `%m` = "statPercm")
statBase <- sapply(typeBase, function(type){
if(type %in% names(statBase)){
statBase[[type]]
}else paste0("stat", type)
})
for(type in names(statBase)){
expect_equal({
summaryTable <- setNames(
data.frame(c(1, 2, NA_integer_)),
statBase[!!type]
)
stat <- getStats(type = !!type)
eval(expr = stat[[!!type]], envir = summaryTable)
},
formatC(x = summaryTable[[statBase[!!type]]])
)
}
})
test_that("Percentage of subjects and records are formatted correctly", {
statPerc <- c(`%` = "statPercN", `%m` = "statPercm")
for(type in names(statPerc)){
expect_equal({
summaryTable <- setNames(
data.frame(c(56.7, 0, 0.999, 1e-6, 99.99, NA_integer_)),
statPerc[!!type]
)
stat <- getStats(type = !!type)
eval(expr = stat[[!!type]], envir = summaryTable)
},
formatPercentage(x = summaryTable[[statPerc[!!type]]])
)
}
})
test_that("The number of subjects is correctly formatted with specified number of decimals as number", {
stat <- getStats(type = "n", nDecN = 1)
summaryTable <- data.frame(statN = c(13, 100.56))
expect_equal(
eval(expr = stat$n, envir = summaryTable),
c("13.0", "100.6")
)
})
test_that("The number of records is correctly formatted with specified number of decimals as number", {
stat <- getStats(type = "m", nDecN = 2)
summaryTable <- data.frame(statm = c(13, 100.567))
expect_equal(
eval(expr = stat$m, envir = summaryTable),
c("13.00", "100.57")
)
})
test_that("The mean is correctly formatted with specified number of decimals as number", {
stat <- getStats(type = "Mean", nDecCont = 4)
summaryTable <- data.frame(statMean = c(1098, 100.567567))
expect_equal(
eval(expr = stat$Mean, envir = summaryTable),
c("1098.00000", "100.56757")
)
})
test_that("The mean is correctly formatted with specified number of decimals as function", {
stat <- getStats(
type = "Mean",
x = seq.int(10),
nDecCont = function(x) 2
)
summaryTable <- data.frame(statMean = c(1098, 100.567567))
expect_equal(
eval(expr = stat$Mean, envir = summaryTable),
c("1098.000", "100.568")
)
})
test_that("The median is correctly formatted with specified number of decimals as number", {
stat <- getStats(type = "Median", nDecCont = 4)
summaryTable <- data.frame(statMedian = c(1098, 100.567567))
expect_equal(
eval(expr = stat$Median, envir = summaryTable),
c("1098.00000", "100.56757")
)
})
test_that("The standard deviation is correctly formatted with specified number of decimals as number", {
stat <- getStats(type = "SD", nDecCont = 4)
summaryTable <- data.frame(statSD = c(1098, 100.567567))
expect_equal(
eval(expr = stat$SD, envir = summaryTable),
c("1098.00000", "100.56757")
)
})
test_that("The standard error is correctly formatted with specified number of decimals as number", {
stat <- getStats(type = "SE", nDecCont = 4)
summaryTable <- data.frame(statSE = c(1098, 100.56756767))
expect_equal(
eval(expr = stat$SE, envir = summaryTable),
c("1098.000000", "100.567568")
)
})
test_that("The minimum is correctly formatted with specified number of decimals as number", {
stat <- getStats(type = "Min", nDecCont = 4)
summaryTable <- data.frame(statMin = c(1098, 100.56756767))
expect_equal(
eval(expr = stat$Min, envir = summaryTable),
c("1098.0000", "100.5676")
)
})
test_that("The maximum is correctly formatted with specified number of decimals as number", {
stat <- getStats(type = "Max", nDecCont = 4)
summaryTable <- data.frame(statMax = c(1098, 100.56756767))
expect_equal(
eval(expr = stat$Max, envir = summaryTable),
c("1098.0000", "100.5676")
)
})
test_that("The default set of summary statistics is correctly extracted", {
statType <- c("statN", "statMean", "statSD", "statSE", "statMedian", "statMin", "statMax")
type <- ifelse(statType == "statN", "n", sub("stat", "", statType))
expect_identical(
getStats(type = "summary-default"),
getStats(type = type)
)
})
test_that("The entire set of summary statistics is correctly extracted", {
statType <- c("statN", "statMean", "statSD", "statSE", "statMedian",
"statMin", "statMax", "statPercN", "statm")
type <- sapply(statType, sub, pattern = "stat", replacement = "")
type["statN"] <- "n"
type["statPercN"] <- "%"
expect_identical(
getStats(type = "summary"),
getStats(type = type)
)
})
test_that("The default set of count statistics is correctly extracted", {
statType <- c("statN", "statPercN")
type <- c(statN = "n", statm = "%")
expect_identical(
getStats(type = "count-default"),
getStats(type = type)
)
})
test_that("The entire set of count statistics is correctly extracted", {
statType <- c("statN", "statPercN", "statm")
type <- c(statN = "n", statm = "%", statm = "m")
expect_identical(
getStats(type = "count"),
getStats(type = type)
)
})
test_that("The median (range) is correctly extracted", {
stat <- getStats(type = "median (range)")
statType <- c("statMin", "statMax", "statMedian")
type <- sub("stat", "", statType)
summaryTable <- setNames(
as.data.frame(replicate(length(statType), rnorm(4))),
statType
)
# check value
statValue <- eval(expr = stat[[1]], envir = summaryTable)
statBase <- getStats(type = type)
statBaseValue <- as.data.frame(lapply(statBase, eval, envir = summaryTable))
expect_equal(
statValue,
with(statBaseValue, paste0(Median, " (", Min, ",", Max, ")"))
)
})
test_that("The median\n(range) is correctly extracted", {
stat <- getStats(type = "median\n(range)")
statType <- c("statMin", "statMax", "statMedian")
type <- sub("stat", "", statType)
summaryTable <- setNames(
as.data.frame(replicate(length(statType), rnorm(4))),
statType
)
# check value
statValue <- eval(expr = stat[[1]], envir = summaryTable)
statBase <- getStats(type = type)
statBaseValue <- as.data.frame(lapply(statBase, eval, envir = summaryTable))
expect_equal(
statValue,
with(statBaseValue, paste0(Median, "\n(", Min, ",", Max, ")"))
)
})
test_that("The mean (se) is correctly extracted", {
stat <- getStats(type = "mean (se)")
statType <- c("statMean", "statSE")
type <- sub("stat", "", statType)
summaryTable <- setNames(
as.data.frame(replicate(length(statType), rnorm(4))),
statType
)
# check value
statValue <- eval(expr = stat[[1]], envir = summaryTable)
statBase <- getStats(type = type)
statBaseValue <- as.data.frame(lapply(statBase, eval, envir = summaryTable))
expect_equal(
statValue,
with(statBaseValue, paste0(Mean, " (", SE, ")"))
)
})
test_that("The mean (range) is correctly extracted", {
stat <- getStats(type = "mean (range)")
statType <- c("statMean", "statMin", "statMax")
type <- sub("stat", "", statType)
summaryTable <- setNames(
as.data.frame(replicate(length(statType), rnorm(4))),
statType
)
# check value
statValue <- eval(expr = stat[[1]], envir = summaryTable)
statBase <- getStats(type = type)
statBaseValue <- as.data.frame(lapply(statBase, eval, envir = summaryTable))
expect_equal(
statValue,
with(statBaseValue, paste0(Mean, " (", Min, ",", Max, ")"))
)
})
test_that("The n (%) is correctly extracted", {
stat <- getStats(type = "n (%)")
statType <- c("statN", "statPercN")
type <- c(statN = "n", statPercN = "%")
summaryTable <- setNames(
as.data.frame(replicate(length(statType), rnorm(4))),
statType
)
# check value
statValue <- eval(expr = stat[[1]], envir = summaryTable)
statBase <- getStats(type = type)
statBaseValue <- as.data.frame(lapply(statBase, eval, envir = summaryTable), check.names = FALSE)
expect_equal(
statValue,
with(statBaseValue, paste0(n, " (", `%`, ")"))
)
})
test_that("If case of 0 counts, the percentage is not included in n (%)", {
stat0 <- eval(
expr = getStats(type = "n (%)")[[1]],
envir = data.frame(statN = 0, statPercN = Inf)
)
expect_equal(stat0, "0")
})
test_that("The m (%) is correctly extracted", {
stat <- getStats(type = "m (%)")
statType <- c("statm", "statPercm")
type <- c(statm = "m", statPercm = "%m")
summaryTable <- setNames(
as.data.frame(replicate(length(statType), rnorm(4))),
statType
)
# check value
statValue <- eval(expr = stat[[1]], envir = summaryTable)
statBase <- getStats(type = type)
statBaseValue <- as.data.frame(lapply(statBase, eval, envir = summaryTable), check.names = FALSE)
expect_equal(
statValue,
with(statBaseValue, paste0(m, " (", `%m`, ")"))
)
})
test_that("If case of 0 counts, the percentage is not included in m (%)", {
stat0 <- eval(
expr = getStats(type = "m (%)")[[1]],
envir = data.frame(statm = 0, statPercm = Inf)
)
expect_equal(stat0, "0")
})
test_that("The n/N (%) is correctly extracted", {
stat <- getStats(type = "n/N (%)")
statType <- c("statN", "statPercN", "statPercTotalN")
summaryTable <- setNames(
as.data.frame(replicate(length(statType), rnorm(4))),
statType
)
statValue <- eval(expr = stat[[1]], envir = summaryTable)
# get base stats
type <- c(statN = "n", statPercN = "%")
statBase <- getStats(type = type)
statBaseValue <- as.data.frame(lapply(statBase, eval, envir = summaryTable), check.names = FALSE)
# + add statPercTotalN
statBaseValue <- cbind(summaryTable, statBaseValue)
expect_equal(
statValue,
with(statBaseValue, paste0(n, "/", statPercTotalN, " (", `%`, ")"))
)
})
test_that("If case of 0 counts, the percentage not included in n/N (%)", {
stat0 <- eval(
expr = getStats(type = "n/N (%)")[[1]],
envir = data.frame(statN = 0, statPercN = Inf, statPercTotalN = NA)
)
expect_equal(stat0, "0")
})
test_that("A warning is generated if the statistics don't have unique nams", {
expect_warning(
getStats(type = c("count", "n")),
"duplicated names"
)
})
test_that("The statistic name is included if specified", {
expect_named(
getStats(type = "n", includeName = TRUE),
"n"
)
})
test_that("The statistic name is not included if specified", {
expect_named(
getStats(type = "n", includeName = FALSE),
NULL
)
})
test_that("The name is by default included if multiple statistics are requested", {
type <- c("n", "m")
expect_warning(
stat <- getStats(type = type, includeName = FALSE),
"The labels for the different types.*are retained.*"
)
expect_named(stat, type)
})
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.