Nothing
library(dplyr)
library(haven)
library(tibble)
adsl <- cdisc_adsl %>%
filter(TRT01P != "")
adae <- read_sas("test_data/adae.sas7bdat")
test_that("Row sorting works as expected with and without a descending_by argument", {
expected <- tibble::tribble(
~label, ~Placebo, ~Xanomeline.High.Dose, ~Xanomeline.Low.Dose, ~row_type, ~nested_level, ~group_level, ~SEX,
"F", "2 (40.0%)", "3 (60.0%)", "1 (20.0%)", "NESTED", 0, 0, "F",
"WHITE", "2 (40.0%)", "3 (60.0%)", "1 (20.0%)", "NESTED", 1, 0, "F",
"M", "3 (60.0%)", "2 (40.0%)", "4 (80.0%)", "NESTED", 0, 0, "M",
"WHITE", "3 (60.0%)", "2 (40.0%)", "4 (80.0%)", "NESTED", 1, 0, "M"
)
expected$SEX <- factor(expected$SEX)
expect_equal(nested_freq(adsl,rowvar = "SEX*RACE",colvar = "TRT01P",statlist = statlist("n (x.x%)")),expected,ignore_attr = TRUE)
expected <- tibble::tribble(
~label, ~Placebo, ~Xanomeline.High.Dose, ~Xanomeline.Low.Dose, ~row_type, ~nested_level, ~group_level, ~SEX,
"M", "3 (60.0%)", "2 (40.0%)", "4 (80.0%)", "NESTED", 0, 0, "M",
"WHITE", "3 (60.0%)", "2 (40.0%)", "4 (80.0%)", "NESTED", 1, 0, "M",
"F", "2 (40.0%)", "3 (60.0%)", "1 (20.0%)", "NESTED", 0, 0, "F",
"WHITE", "2 (40.0%)", "3 (60.0%)", "1 (20.0%)", "NESTED", 1, 0, "F"
)
expected$SEX <- factor(expected$SEX)
expect_equal(nested_freq(adsl,
rowvar = "SEX*RACE",
colvar = "TRT01P",
statlist = statlist("n (x.x%)"),
descending_by = "Placebo"),
expected,
ignore_attr = TRUE)
})
test_that("Three level nested sorting works as expected", {
adsl <- read_sas("test_data/adsl.sas7bdat") %>%
filter(SAFFL == "Y") %>%
mutate(REGION = case_when(SITEGR1 %in% c("716", "718") ~ "EU",
TRUE ~ "NE"),
COUNTRY = case_when(SITEGR1 == "900" ~ "Canada",
SITEGR1 %in% c("716", "718") ~ "BEL",
TRUE ~ "USA")) %>%
mutate(TRT01AN = factor(TRT01AN))
expected <- tibble::tribble(
~label, ~X0, ~X54, ~X81, ~row_type, ~nested_level, ~group_level, ~SEX, ~RACE,
"F", "53 (61.6%)", "50 (59.5%)", "40 (47.6%)", "NESTED", 0, 1, "F", "F",
"BLACK OR AFRICAN AMERICAN", "5 (5.8%)", "6 (7.1%)", "6 (7.1%)", "NESTED", 1, 1, "F", "BLACK OR AFRICAN AMERICAN",
"701", "2 (2.3%)", "1 (1.2%)", "0", "NESTED", 2, 1, "F", "BLACK OR AFRICAN AMERICAN",
"703", "0", "2 (2.4%)", "1 (1.2%)", "NESTED", 2, 1, "F", "BLACK OR AFRICAN AMERICAN",
"705", "1 (1.2%)", "1 (1.2%)", "2 (2.4%)", "NESTED", 2, 1, "F", "BLACK OR AFRICAN AMERICAN",
"706", "1 (1.2%)", "0", "0", "NESTED", 2, 1, "F", "BLACK OR AFRICAN AMERICAN",
"708", "1 (1.2%)", "1 (1.2%)", "1 (1.2%)", "NESTED", 2, 1, "F", "BLACK OR AFRICAN AMERICAN",
"710", "0", "0", "1 (1.2%)", "NESTED", 2, 1, "F", "BLACK OR AFRICAN AMERICAN",
"713", "0", "1 (1.2%)", "0", "NESTED", 2, 1, "F", "BLACK OR AFRICAN AMERICAN",
"718", "0", "0", "1 (1.2%)", "NESTED", 2, 1, "F", "BLACK OR AFRICAN AMERICAN",
"WHITE", "48 (55.8%)", "44 (52.4%)", "34 (40.5%)", "NESTED", 1, 1, "F", "WHITE",
"701", "5 (5.8%)", "4 (4.8%)", "6 (7.1%)", "NESTED", 2, 1, "F", "WHITE",
"702", "0", "1 (1.2%)", "0", "NESTED", 2, 1, "F", "WHITE",
"703", "4 (4.7%)", "2 (2.4%)", "3 (3.6%)", "NESTED", 2, 1, "F", "WHITE",
"704", "4 (4.7%)", "5 (6.0%)", "2 (2.4%)", "NESTED", 2, 1, "F", "WHITE",
"705", "4 (4.7%)", "3 (3.6%)", "2 (2.4%)", "NESTED", 2, 1, "F", "WHITE",
"706", "0", "1 (1.2%)", "1 (1.2%)", "NESTED", 2, 1, "F", "WHITE",
"707", "0", "1 (1.2%)", "0", "NESTED", 2, 1, "F", "WHITE",
"708", "5 (5.8%)", "3 (3.6%)", "4 (4.8%)", "NESTED", 2, 1, "F", "WHITE",
"709", "4 (4.7%)", "5 (6.0%)", "2 (2.4%)", "NESTED", 2, 1, "F", "WHITE",
"710", "8 (9.3%)", "6 (7.1%)", "3 (3.6%)", "NESTED", 2, 1, "F", "WHITE",
"711", "0", "1 (1.2%)", "2 (2.4%)", "NESTED", 2, 1, "F", "WHITE",
"713", "1 (1.2%)", "2 (2.4%)", "1 (1.2%)", "NESTED", 2, 1, "F", "WHITE",
"714", "2 (2.3%)", "1 (1.2%)", "0", "NESTED", 2, 1, "F", "WHITE",
"715", "3 (3.5%)", "1 (1.2%)", "1 (1.2%)", "NESTED", 2, 1, "F", "WHITE",
"716", "5 (5.8%)", "2 (2.4%)", "6 (7.1%)", "NESTED", 2, 1, "F", "WHITE",
"717", "2 (2.3%)", "2 (2.4%)", "0", "NESTED", 2, 1, "F", "WHITE",
"718", "1 (1.2%)", "4 (4.8%)", "1 (1.2%)", "NESTED", 2, 1, "F", "WHITE",
"M", "33 (38.4%)", "34 (40.5%)", "44 (52.4%)", "NESTED", 0, 1, "M", "M",
"AMERICAN INDIAN OR ALASKA NATIVE", "0", "0", "1 (1.2%)", "NESTED", 1, 1, "M", "AMERICAN INDIAN OR ALASKA NATIVE",
"701", "0", "0", "1 (1.2%)", "NESTED", 2, 1, "M", "AMERICAN INDIAN OR ALASKA NATIVE",
"BLACK OR AFRICAN AMERICAN", "3 (3.5%)", "0", "3 (3.6%)", "NESTED", 1, 1, "M", "BLACK OR AFRICAN AMERICAN",
"708", "2 (2.3%)", "0", "0", "NESTED", 2, 1, "M", "BLACK OR AFRICAN AMERICAN",
"710", "0", "0", "1 (1.2%)", "NESTED", 2, 1, "M", "BLACK OR AFRICAN AMERICAN",
"711", "1 (1.2%)", "0", "0", "NESTED", 2, 1, "M", "BLACK OR AFRICAN AMERICAN",
"714", "0", "0", "1 (1.2%)", "NESTED", 2, 1, "M", "BLACK OR AFRICAN AMERICAN",
"718", "0", "0", "1 (1.2%)", "NESTED", 2, 1, "M", "BLACK OR AFRICAN AMERICAN",
"WHITE", "30 (34.9%)", "34 (40.5%)", "40 (47.6%)", "NESTED", 1, 1, "M", "WHITE",
"701", "7 (8.1%)", "8 (9.5%)", "7 (8.3%)", "NESTED", 2, 1, "M", "WHITE",
"703", "2 (2.3%)", "2 (2.4%)", "2 (2.4%)", "NESTED", 2, 1, "M", "WHITE",
"704", "5 (5.8%)", "3 (3.6%)", "6 (7.1%)", "NESTED", 2, 1, "M", "WHITE",
"705", "0", "1 (1.2%)", "2 (2.4%)", "NESTED", 2, 1, "M", "WHITE",
"707", "1 (1.2%)", "0", "0", "NESTED", 2, 1, "M", "WHITE",
"708", "1 (1.2%)", "4 (4.8%)", "3 (3.6%)", "NESTED", 2, 1, "M", "WHITE",
"709", "3 (3.5%)", "2 (2.4%)", "5 (6.0%)", "NESTED", 2, 1, "M", "WHITE",
"710", "3 (3.5%)", "4 (4.8%)", "5 (6.0%)", "NESTED", 2, 1, "M", "WHITE",
"713", "2 (2.3%)", "0", "2 (2.4%)", "NESTED", 2, 1, "M", "WHITE",
"714", "0", "1 (1.2%)", "1 (1.2%)", "NESTED", 2, 1, "M", "WHITE",
"715", "0", "2 (2.4%)", "1 (1.2%)", "NESTED", 2, 1, "M", "WHITE",
"716", "3 (3.5%)", "6 (7.1%)", "2 (2.4%)", "NESTED", 2, 1, "M", "WHITE",
"717", "0", "0", "3 (3.6%)", "NESTED", 2, 1, "M", "WHITE",
"718", "3 (3.5%)", "1 (1.2%)", "1 (1.2%)", "NESTED", 2, 1, "M", "WHITE"
)
expected$SEX <- factor(expected$SEX)
expect_equal(
nested_freq(adsl,
colvar = "TRT01AN",
rowvar = "SEX*RACE*SITEID",
statlist = statlist("n (x.x%)", denoms_by = c("TRT01AN"))) %>% mutate(RACE = as.character(RACE)),
expected,
ignore_attr = TRUE
)
})
test_that("nested values can span over higher levels", {
mtcars2 <- mtcars
mtcars2$grp <- rep(c("A", "B"), 16)
expected <- tibble::tribble(
~label, ~X4, ~X6, ~X8, ~row_type, ~nested_level, ~group_level, ~grp,
"A", "5", "2", "9", "NESTED", 0, 0, "A",
"0", "1", "1", "9", "NESTED", 1, 0, "A",
"1", "4", "1", "0", "NESTED", 1, 0, "A",
"B", "6", "5", "5", "NESTED", 0, 0, "B",
"0", "0", "2", "5", "NESTED", 1, 0, "B",
"1", "6", "3", "0", "NESTED", 1, 0, "B"
)
expected$grp <- factor(expected$grp)
expect_equal(
nested_freq(
mtcars2,
colvar= "cyl",
rowvar = "grp*vs",
statlist = statlist("n", distinct = FALSE)
),
expected,
ignore_attr = TRUE
)
expected <- tibble::tribble(
~label, ~X4, ~X6, ~X8, ~row_type, ~nested_level, ~group_level, ~grp,
"A", "5", "2", "9", "NESTED", 0, 0, "A",
"0", "1", "1", "9", "NESTED", 1, 0, "A"
)
expected$grp <- factor(expected$grp)
expect_equal(
nested_freq(
mtcars2,
colvar = "cyl",
rowvar = "grp*vs",
statlist = statlist("n", distinct = FALSE),
cutoff = "8 >= 6",
cutoff_stat = "n"
),
expected,
ignore_attr = TRUE
)
expected <- tibble::tribble(
~label, ~X4, ~X6, ~X8, ~row_type, ~nested_level, ~group_level, ~grp, ~vs, ~carb,
"A", "2", "0", "-", "NESTED", 0, 1, "A", "A", "1",
"0", "1", "0", "-", "NESTED", 2, 1, "A", "1", "1",
"1", "2", "0", "-", "NESTED", 1, 1, "A", "1", "1",
"1", "1", "0", "-", "NESTED", 2, 1, "A", "1", "1",
"A", "3", "-", "3", "NESTED", 0, 1, "A", "A", "2",
"0", "1", "-", "3", "NESTED", 1, 1, "A", "0", "2",
"0", "0", "-", "3", "NESTED", 2, 1, "A", "0", "2",
"1", "1", "-", "0", "NESTED", 2, 1, "A", "0", "2",
"0", "1", "-", "0", "NESTED", 2, 1, "A", "1", "2",
"1", "2", "-", "0", "NESTED", 1, 1, "A", "1", "2",
"1", "1", "-", "0", "NESTED", 2, 1, "A", "1", "2",
"A", "-", "-", "1", "NESTED", 0, 1, "A", "A", "3",
"0", "-", "-", "1", "NESTED", 1, 1, "A", "0", "3",
"0", "-", "-", "1", "NESTED", 2, 1, "A", "0", "3",
"A", "-", "2", "4", "NESTED", 0, 1, "A", "A", "4",
"0", "-", "1", "4", "NESTED", 1, 1, "A", "0", "4",
"0", "-", "0", "3", "NESTED", 2, 1, "A", "0", "4",
"1", "-", "1", "1", "NESTED", 2, 1, "A", "0", "4",
"0", "-", "1", "0", "NESTED", 2, 1, "A", "1", "4",
"1", "-", "1", "0", "NESTED", 1, 1, "A", "1", "4",
"1", "-", "0", "0", "NESTED", 2, 1, "A", "1", "4",
"A", "-", "-", "1", "NESTED", 0, 1, "A", "A", "8",
"0", "-", "-", "1", "NESTED", 1, 1, "A", "0", "8",
"0", "-", "-", "0", "NESTED", 2, 1, "A", "0", "8",
"1", "-", "-", "1", "NESTED", 2, 1, "A", "0", "8",
"B", "3", "2", "-", "NESTED", 0, 1, "B", "B", "1",
"0", "0", "2", "-", "NESTED", 2, 1, "B", "1", "1",
"1", "3", "2", "-", "NESTED", 1, 1, "B", "1", "1",
"1", "3", "0", "-", "NESTED", 2, 1, "B", "1", "1",
"B", "3", "-", "1", "NESTED", 0, 1, "B", "B", "2",
"0", "0", "-", "1", "NESTED", 1, 1, "B", "0", "2",
"0", "0", "-", "1", "NESTED", 2, 1, "B", "0", "2",
"0", "1", "-", "0", "NESTED", 2, 1, "B", "1", "2",
"1", "3", "-", "0", "NESTED", 1, 1, "B", "1", "2",
"1", "2", "-", "0", "NESTED", 2, 1, "B", "1", "2",
"B", "-", "-", "2", "NESTED", 0, 1, "B", "B", "3",
"0", "-", "-", "2", "NESTED", 1, 1, "B", "0", "3",
"0", "-", "-", "2", "NESTED", 2, 1, "B", "0", "3",
"B", "-", "2", "2", "NESTED", 0, 1, "B", "B", "4",
"0", "-", "1", "2", "NESTED", 1, 1, "B", "0", "4",
"0", "-", "0", "2", "NESTED", 2, 1, "B", "0", "4",
"1", "-", "1", "0", "NESTED", 2, 1, "B", "0", "4",
"0", "-", "1", "0", "NESTED", 2, 1, "B", "1", "4",
"1", "-", "1", "0", "NESTED", 1, 1, "B", "1", "4",
"1", "-", "0", "0", "NESTED", 2, 1, "B", "1", "4",
"B", "-", "1", "-", "NESTED", 0, 1, "B", "B", "6",
"0", "-", "1", "-", "NESTED", 1, 1, "B", "0", "6",
"0", "-", "0", "-", "NESTED", 2, 1, "B", "0", "6",
"1", "-", "1", "-", "NESTED", 2, 1, "B", "0", "6"
)
expected$grp <- factor(expected$grp)
expected$carb <- factor(expected$carb)
expect_equal(
nested_freq(
mtcars2,
colvar = "cyl",
rowvar = "grp*vs*am",
statlist = statlist("n", denoms_by = c("cyl", "carb"), distinct = FALSE),
tablebyvar = "carb"
) %>% mutate(vs = as.character(vs)),
expected,
ignore_attr = TRUE
)
})
test_that("subValues in a nested count layer should respect rowbyvar", {
# If a value is found in one table by var but not another it should only be
# found in one tablebyvar
mtcars2 <- mtcars %>%
rownames_to_column(var = "USUBJID")
mtcars2$grp <- rep(c("A", "B"), length.out = 32)
expected <- tibble::tribble(
~label, ~X3, ~X4, ~X5, ~row_type, ~nested_level, ~group_level, ~carb, ~grp,
"A", "1 (6.7)", "1 (8.3)", "0", "NESTED", 0, 1, "1", "A",
"4", "1 (6.7)", "1 (8.3)", "0", "NESTED", 1, 1, "1", "A",
"A", "3 (20.0)", "2 (16.7)", "1 (20.0)", "NESTED", 0, 1, "2", "A",
"4", "0", "2 (16.7)", "1 (20.0)", "NESTED", 1, 1, "2", "A",
"8", "3 (20.0)", "0", "0", "NESTED", 1, 1, "2", "A",
"A", "1 (6.7)", "0", "0", "NESTED", 0, 1, "3", "A",
"8", "1 (6.7)", "0", "0", "NESTED", 1, 1, "3", "A",
"A", "3 (20.0)", "2 (16.7)", "1 (20.0)", "NESTED", 0, 1, "4", "A",
"6", "0", "2 (16.7)", "0", "NESTED", 1, 1, "4", "A",
"8", "3 (20.0)", "0", "1 (20.0)", "NESTED", 1, 1, "4", "A",
"A", "0", "0", "1 (20.0)", "NESTED", 0, 1, "8", "A",
"8", "0", "0", "1 (20.0)", "NESTED", 1, 1, "8", "A",
"B", "2 (13.3)", "3 (25.0)", "0", "NESTED", 0, 1, "1", "B",
"4", "0", "3 (25.0)", "0", "NESTED", 1, 1, "1", "B",
"6", "2 (13.3)", "0", "0", "NESTED", 1, 1, "1", "B",
"B", "1 (6.7)", "2 (16.7)", "1 (20.0)", "NESTED", 0, 1, "2", "B",
"4", "0", "2 (16.7)", "1 (20.0)", "NESTED", 1, 1, "2", "B",
"8", "1 (6.7)", "0", "0", "NESTED", 1, 1, "2", "B",
"B", "2 (13.3)", "0", "0", "NESTED", 0, 1, "3", "B",
"8", "2 (13.3)", "0", "0", "NESTED", 1, 1, "3", "B",
"B", "2 (13.3)", "2 (16.7)", "0", "NESTED", 0, 1, "4", "B",
"6", "0", "2 (16.7)", "0", "NESTED", 1, 1, "4", "B",
"8", "2 (13.3)", "0", "0", "NESTED", 1, 1, "4", "B",
"B", "0", "0", "1 (20.0)", "NESTED", 0, 1, "6", "B",
"6", "0", "0", "1 (20.0)", "NESTED", 1, 1, "6", "B"
)
expected$grp <- factor(expected$grp)
expected$carb <- factor(expected$carb)
expect_equal(
nested_freq(
mtcars2,
colvar = "gear",
rowvar = "grp*cyl",
rowbyvar = "carb"
),
expected,
ignore_attr = TRUE
)
})
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.