library("testthat")
library("stringr")
context("descriptionStats")
data("Loblolly")
set.seed(1)
Loblolly$young <- Loblolly$age < 10
Loblolly$young <- factor(Loblolly$young, label = c("Yes", "No"))
Loblolly$fvar <- factor(sample(letters[1:3], size = nrow(Loblolly), replace = TRUE))
Loblolly$young_w_missing <- Loblolly$young
Loblolly$young_w_missing[sample(1:nrow(Loblolly), size = 4)] <- NA
Loblolly$fvar_w_missing <- Loblolly$fvar
Loblolly$fvar_w_missing[sample(1:nrow(Loblolly), size = 4)] <- NA
Loblolly$height_w_missing <- Loblolly$height
Loblolly$height_w_missing[sample(1:nrow(Loblolly), size = 4)] <- NA
test_that("Check describeMean", {
expect_match(
describeMean(Loblolly$height, html = TRUE, digits = 1),
sprintf("^%.1f", mean(Loblolly$height))
)
expect_match(
describeMean(Loblolly$height, html = TRUE, digits = 2),
sprintf("^%.2f", mean(Loblolly$height))
)
expect_match(
describeMean(Loblolly$height_w_missing, html = TRUE, digits = 2, useNA = "no"),
sprintf("^%.2f", mean(Loblolly$height_w_missing, na.rm = TRUE))
)
dm <- describeMean(Loblolly$height_w_missing, html = TRUE, digits = 2)
expect_match(
dm[1],
sprintf("^%.2f", mean(Loblolly$height_w_missing, na.rm = TRUE))
)
expect_match(
dm[2],
sprintf(
"^%d",
sum(is.na(Loblolly$height_w_missing))
)
)
expect_match(
dm[2],
sprintf(
"\\(%.2f%%\\)",
mean(is.na(Loblolly$height_w_missing)) * 100
)
)
dm <- describeMean(Loblolly$height_w_missing,
html = TRUE,
digits = 2, useNA.digits = 1
)
expect_match(
dm[1],
sprintf("^%.2f", mean(Loblolly$height_w_missing, na.rm = TRUE))
)
expect_match(
dm[2],
sprintf(
"^%d",
sum(is.na(Loblolly$height_w_missing))
)
)
expect_match(
dm[2],
sprintf(
"\\(%.1f%%\\)",
mean(is.na(Loblolly$height_w_missing)) * 100
)
)
})
test_that("Check describeMedian", {
expect_match(
describeMedian(Loblolly$height, html = TRUE, digits = 1),
sprintf("^%.1f", median(Loblolly$height))
)
expect_match(
describeMedian(Loblolly$height, html = TRUE, digits = 2),
sprintf("^%.2f", median(Loblolly$height))
)
expect_match(
describeMedian(Loblolly$height_w_missing, html = TRUE, digits = 2, useNA = "no"),
sprintf("^%.2f", median(Loblolly$height_w_missing, na.rm = TRUE))
)
dm <- describeMedian(Loblolly$height_w_missing,
html = TRUE,
digits = 2
)
expect_match(
dm[1],
sprintf("^%.2f", median(Loblolly$height_w_missing, na.rm = TRUE))
)
expect_match(
dm[2],
sprintf(
"^%d",
sum(is.na(Loblolly$height_w_missing))
)
)
expect_match(
dm[2],
sprintf(
"\\(%.2f%%\\)",
mean(is.na(Loblolly$height_w_missing)) * 100
)
)
dm <- describeMedian(Loblolly$height_w_missing,
html = TRUE,
digits = 2, useNA.digits = 1
)
expect_match(
dm[1],
sprintf("^%.2f", median(Loblolly$height_w_missing, na.rm = TRUE))
)
expect_match(
dm[2],
sprintf(
"^%d",
sum(is.na(Loblolly$height_w_missing))
)
)
expect_match(
dm[2],
sprintf(
"\\(%.1f%%\\)",
mean(is.na(Loblolly$height_w_missing)) * 100
)
)
})
test_that("Check describeFactors", {
d_f <- describeFactors(Loblolly$fvar, html = TRUE, digits = 1)
t_f <- table(Loblolly$fvar)
for (n in names(t_f)) {
expect_match(
d_f[n, ],
sprintf("^%d", t_f[n])
)
expect_match(
d_f[n, ],
sprintf("\\(%.1f%%\\)", prop.table(t_f)[n] * 100)
)
}
d_f <- describeFactors(Loblolly$fvar, html = TRUE, digits = 1, number_first = FALSE)
for (n in names(t_f)) {
expect_match(
d_f[n, ],
sprintf("\\(%d\\)", t_f[n])
)
expect_match(
d_f[n, ],
sprintf("^%.1f%%", prop.table(t_f)[n] * 100)
)
}
d_f <- describeFactors(Loblolly$fvar_w_missing, html = TRUE, digits = 1)
t_f <- table(Loblolly$fvar_w_missing, useNA = "ifany")
for (n in names(t_f)) {
if (is.na(n)) {
row_no_df <- which(rownames(d_f) == "Missing")
row_no_tf <- which(is.na(names(t_f)))
} else {
row_no_df <- which(rownames(d_f) == n)
row_no_tf <- which(names(t_f) == n)
}
expect_match(
d_f[row_no_df, ],
sprintf("^%d", t_f[row_no_tf])
)
expect_match(
d_f[row_no_df, ],
sprintf("\\(%.1f%%\\)", prop.table(t_f)[row_no_tf] * 100)
)
}
d_f <- describeFactors(Loblolly$fvar_w_missing,
html = TRUE, digits = 2,
useNA.digits = 1
)
t_f <- table(Loblolly$fvar_w_missing, useNA = "ifany")
for (n in names(t_f)) {
if (is.na(n)) {
row_no_df <- which(rownames(d_f) == "Missing")
row_no_tf <- which(is.na(names(t_f)))
prop <- sprintf("%.1f", prop.table(t_f)[is.na(names(t_f))] * 100)
} else {
row_no_df <- which(rownames(d_f) == n)
row_no_tf <- which(names(t_f) == n)
prop <- sprintf("%.2f", prop.table(t_f)[which(names(t_f) == n)] * 100)
}
expect_match(
d_f[row_no_df, ],
sprintf("^%d", t_f[row_no_tf])
)
expect_match(
d_f[row_no_df, ],
sprintf("\\(%s%%\\)", prop)
)
}
})
test_that("Check describeProp", {
d_f <- describeProp(Loblolly$young, html = TRUE, digits = 1)
expect_equal(length(d_f), 1)
t_f <- table(Loblolly$young)
expect_match(
d_f,
sprintf("^%d", t_f["Yes"])
)
expect_match(
d_f,
sprintf("\\(%.1f%%\\)", prop.table(t_f)["Yes"] * 100)
)
# Should default to factor function if there are misssing
d_f <- describeProp(Loblolly$young_w_missing, html = TRUE, digits = 1)
expect_equal(length(d_f), 3)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.