Nothing
init_flextable_defaults()
library(data.table)
set.seed(42)
USUBJID <- sprintf("01-ABC-%04.0f", 1:50)
VISITS <- c("SCREENING 1", "WEEK 2", "MONTH 3")
LBTEST <- c("Albumin", "Sodium")
VISITNUM <- seq_along(VISITS)
LBBLFL <- rep(NA_character_, length(VISITNUM))
LBBLFL[1] <- "Y"
VISIT <- data.frame(
VISIT = VISITS, VISITNUM = VISITNUM,
LBBLFL = LBBLFL, stringsAsFactors = FALSE
)
labdata <- expand.grid(
USUBJID = USUBJID, LBTEST = LBTEST,
VISITNUM = VISITNUM, stringsAsFactors = FALSE
)
setDT(labdata)
labdata <- merge(labdata, VISIT, by = "VISITNUM")
labdata[, c("LBNRIND") := list(
sample(
x = c("LOW", "NORMAL", "HIGH"), size = .N,
replace = TRUE, prob = c(.03, .9, .07)
)
)]
setDF(labdata)
test_that("shift_table without treatment", {
st <- shift_table(
x = labdata, cn_visit = "VISIT",
cn_grade = "LBNRIND", cn_usubjid = "USUBJID",
cn_lab_cat = "LBTEST", cn_is_baseline = "LBBLFL",
baseline_identifier = "Y",
grade_levels = c("LOW", "NORMAL", "HIGH")
)
expect_s3_class(st, "data.frame")
expect_true("BASELINE" %in% names(st))
expect_true("N" %in% names(st))
expect_true("PCT" %in% names(st))
# attributes
visit_n <- attr(st, "VISIT_N")
expect_s3_class(visit_n, "data.frame")
expect_true("N_VISIT" %in% names(visit_n))
fun_visit <- attr(st, "FUN_VISIT")
fun_grade <- attr(st, "FUN_GRADE")
expect_type(fun_visit, "closure")
expect_type(fun_grade, "closure")
# factor functions work
st$VISIT <- fun_visit(st$VISIT)
expect_s3_class(st$VISIT, "factor")
expect_equal(levels(st$VISIT), VISITS)
st$BASELINE <- fun_grade(st$BASELINE)
expect_s3_class(st$BASELINE, "factor")
expect_true("Missing" %in% levels(st$BASELINE))
expect_true("Sum" %in% levels(st$BASELINE))
# all PCT values between 0 and 1
expect_true(all(st$PCT >= 0 & st$PCT <= 1))
})
test_that("shift_table with treatment", {
subject_elts <- unique(labdata[, "USUBJID", drop = FALSE])
subject_elts$TREAT <- sample(
c("Treatment", "Placebo"),
size = nrow(subject_elts), replace = TRUE
)
labdata_treat <- merge(labdata, subject_elts, by = "USUBJID")
st <- shift_table(
x = labdata_treat, cn_visit = "VISIT",
cn_grade = "LBNRIND", cn_usubjid = "USUBJID",
cn_lab_cat = "LBTEST", cn_treatment = "TREAT",
cn_is_baseline = "LBBLFL",
baseline_identifier = "Y",
grade_levels = c("LOW", "NORMAL", "HIGH")
)
expect_s3_class(st, "data.frame")
expect_true("TREAT" %in% names(st))
visit_n <- attr(st, "VISIT_N")
expect_true("TREAT" %in% names(visit_n))
})
test_that("shift_table works with tabulator and as_flextable", {
st <- shift_table(
x = labdata, cn_visit = "VISIT",
cn_grade = "LBNRIND", cn_usubjid = "USUBJID",
cn_lab_cat = "LBTEST", cn_is_baseline = "LBBLFL",
baseline_identifier = "Y",
grade_levels = c("LOW", "NORMAL", "HIGH")
)
visit_n <- attr(st, "VISIT_N")
fun_visit <- attr(st, "FUN_VISIT")
fun_grade <- attr(st, "FUN_GRADE")
st$VISIT <- fun_visit(st$VISIT)
st$BASELINE <- fun_grade(st$BASELINE)
st$LBNRIND <- fun_grade(st$LBNRIND)
visit_n$VISIT <- fun_visit(visit_n$VISIT)
tab <- tabulator(
x = st, hidden_data = visit_n,
row_compose = list(
VISIT = as_paragraph(VISIT, "\n(N=", N_VISIT, ")")
),
rows = c("LBTEST", "VISIT", "BASELINE"),
columns = "LBNRIND",
`n` = as_paragraph(N)
)
ft <- as_flextable(tab, separate_with = "VISIT")
expect_s3_class(ft, "flextable")
expect_true(nrow_part(ft, "body") > 0)
})
test_that("shift_table with custom labels", {
st <- shift_table(
x = labdata, cn_visit = "VISIT",
cn_grade = "LBNRIND", cn_usubjid = "USUBJID",
cn_lab_cat = "LBTEST", cn_is_baseline = "LBBLFL",
baseline_identifier = "Y",
grade_levels = c("LOW", "NORMAL", "HIGH"),
grade_labels = c("Bas", "Normal", "Haut")
)
fun_grade <- attr(st, "FUN_GRADE")
levs <- levels(fun_grade(st$BASELINE))
expect_equal(levs, c("Bas", "Normal", "Haut", "Missing", "Sum"))
})
init_flextable_defaults()
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.