test_that("sparse data is handled correctly", { mtcars2 <- mtcars %>% rownames_to_column(var = "USUBJID") %>% mutate(across(.cols = everything(), .fns = as.factor)) %>% filter(FALSE) expected <- tibble::tribble( ~label, ~X4, ~X6, ~X8, ~row_type, ~group_level, "3", "-", "-", "-", "VALUE", 0, "4", "-", "-", "-", "VALUE", 0, "5", "-", "-", "-", "VALUE", 0 ) expect_equal(freq(mtcars2,colvar = "cyl",rowvar = "gear",statlist = statlist("n (x.x%)")),expected,ignore_attr = TRUE) expected <- tibble::tribble( ~label, ~X4, ~X6, ~X8, ~row_type, ~group_level, "3", "-", "-", "-", "VALUE", 0, "4", "-", "-", "-", "VALUE", 0, "5", "-", "-", "-", "VALUE", 0 ) expect_equal(freq(mtcars2,colvar = "cyl",rowvar = "gear",statlist = statlist(c("n"))),expected,ignore_attr = TRUE) expected <- tibble::tribble( ~label, ~X4, ~X6, ~X8, ~row_type, ~group_level, ~am, "0", "", "", "", "BY_HEADER1", 0, "0", "3", "-", "-", "-", "VALUE", 0, "0", "4", "-", "-", "-", "VALUE", 0, "0", "5", "-", "-", "-", "VALUE", 0, "0", "1", "", "", "", "BY_HEADER1", 0, "1", "3", "-", "-", "-", "VALUE", 0, "1", "4", "-", "-", "-", "VALUE", 0, "1", "5", "-", "-", "-", "VALUE", 0, "1" ) expected$am <- factor(expected$am) expect_equal( freq(mtcars2, colvar = "cyl", rowvar = "gear", rowbyvar = "am", statlist = statlist(c("n"))), expected,ignore_attr = TRUE) expected <- tibble::tribble( ~label, ~X4, ~X6, ~X8, ~row_type, ~group_level, ~am, "3", "-", "-", "-", "VALUE", 0, "0", "4", "-", "-", "-", "VALUE", 0, "0", "5", "-", "-", "-", "VALUE", 0, "0", "3", "-", "-", "-", "VALUE", 0, "1", "4", "-", "-", "-", "VALUE", 0, "1", "5", "-", "-", "-", "VALUE", 0, "1" ) expected$am <- factor(expected$am) expect_equal( freq(mtcars2, colvar = "cyl", rowvar = "gear", tablebyvar = "am", statlist = statlist(c("n" ))), expected,ignore_attr = TRUE ) })