test_that("Defining the big Ns", {
bn1 <- big_n_structure(param_val = "bigN", n_frmt = frmt("Hello World"))
bn2 <- big_n_structure(param_val = c("bigN", "N"))
expect_s3_class(bn1,"big_n_structure")
expect_s3_class(bn2,"big_n_structure")
expect_equal(bn1[["param_val"]], c("bigN"), ignore_attr = c(".Environment"))
expect_equal(bn1[["n_frmt"]], frmt("Hello World"), ignore_attr = c(".Environment"))
expect_equal(bn2[["param_val"]], c("bigN", "N"), ignore_attr = c(".Environment"))
expect_equal(bn2[["n_frmt"]], frmt("\nN = xx"), ignore_attr = c(".Environment"))
expect_error(big_n_structure(param_val = "bigN", n_frmt = "Hello World"))
expect_error(big_n_structure(param_val = "bigN", n_frmt = frmt_when(
">3" ~ frmt("(X.X%)"),
"<=3" ~ frmt("Undetectable")
)))
})
test_that("Simple Case big_n", {
data <- tibble(Group = rep(c("Age (y)", "Sex", "Age (y)", "Sex"), c(3, 3, 6,12)),
Label = rep(c("n", "Mean (SD)", "Male","Female"), c(6, 6,6,6)),
Column = rep(c("Placebo", "Treatment", "Total"), times = 8),
Param = rep(c("n", "mean", "sd", "n", "pct", "n", "pct"), c(6, 3, 3, 3,3,3,3)),
Value = c(15,13,28,14,13,27,73.56, 74.231,71.84,9.347,7.234,8.293,8,7,15,8/14,7/13,15/27,6,6,12,6/14,6/13,12/27
)
) %>%
# Note because tfrmt only does rounding we will need to have the percents multiplied by 100
mutate(Value = case_when(Param == "pct" ~ Value * 100,
TRUE ~ Value),
ord1 = if_else(Group == "Age (y)", 1, 2),
ord2 = if_else(Label == "n", 1, 2))
big_ns <- tibble(Column = c("Placebo", "Treatment", "Total"),
Param = "bigN",
Value = c(30,30,60))
data <- bind_rows(data, big_ns)
tfrmt_sans_colplan <- tfrmt(
group = Group,
label = Label,
column = Column,
value = Value,
param = Param,
sorting_cols = c(ord1, ord2),
body_plan = body_plan(
frmt_structure(group_val = ".default",
label_val = ".default",
frmt_combine("{n} {pct}",
n = frmt("X"),
pct = frmt("(xx.x%)", missing = " ")
)
),
frmt_structure(group_val = "Age (y)", label_val = "Mean (SD)",
frmt_combine("{mean} ({sd})",
mean = frmt("XX.X"),
sd = frmt("x.xx")
)
),
frmt_structure(group_val = ".default", label_val = "n", frmt("xx"))
),
row_grp_plan = row_grp_plan(
row_grp_structure(group_val = ".default", element_block(post_space = " "))
),
big_n = big_n_structure(param_val = "bigN")
)
tfrmt_wit_colplan <- tfrmt_sans_colplan %>%
tfrmt(
col_plan = col_plan(everything(), -starts_with("ord"), "Total")
)
auto_sans_colplan <- tfrmt_sans_colplan %>%
apply_tfrmt(.data = data, tfrmt = ., mock = FALSE) %>%
names()
expect_equal(
auto_sans_colplan,
c(
"Label",
"ord1",
"ord2",
"Placebo\nN = 30",
"Treatment\nN = 30",
"Total\nN = 60",
"..tfrmt_row_grp_lbl"
)
)
auto_wit_colplan <- tfrmt_wit_colplan %>%
apply_tfrmt(.data = data, tfrmt = ., mock = FALSE) %>%
names()
expect_equal(
auto_wit_colplan,
c(
"Label",
"Placebo\nN = 30",
"Treatment\nN = 30",
"Total\nN = 60",
"..tfrmt_row_grp_lbl"
)
)
auto_mock <- apply_tfrmt(.data = select(data, -Value), tfrmt = tfrmt_wit_colplan, mock = TRUE) %>%
names()
expect_equal(auto_mock, c(
"Label",
"Placebo\nN = xx",
"Treatment\nN = xx",
"Total\nN = xx",
"..tfrmt_row_grp_lbl"
))
})
test_that("Test with spanning headers", {
dat <- tibble::tribble(
~group, ~label, ~span2, ~span1, ~my_col, ~parm, ~val,
"g1", "rowlabel1", "column cols", "cols 1,2", "col1" , "value", 1,
"g1", "rowlabel1", "column cols", "cols 1,2", "col2" , "value", 1,
"g1", "rowlabel1", NA, NA, "mycol3", "value", 1,
"g1", "rowlabel1", "column cols", "col 4" , "col4" , "value", 1,
"g1", "rowlabel1", NA, NA, "mycol5", "value", 1,
"g1", "rowlabel2", "column cols", "cols 1,2", "col1" , "value", 2,
"g1", "rowlabel2", "column cols", "cols 1,2", "col2" , "value", 2,
"g1", "rowlabel2", NA, NA , "mycol3", "value", 2,
"g1", "rowlabel2", "column cols", "col 4" , "col4" , "value", 2,
"g1", "rowlabel2", NA, NA, "mycol5", "value", 2,
"g2", "rowlabel3", "column cols", "cols 1,2", "col1" , "value", 3,
"g2", "rowlabel3", "column cols", "cols 1,2", "col2" , "value", 3,
"g2", "rowlabel3", NA, NA, "mycol3", "value", 3,
"g2", "rowlabel3", "column cols", "col 4" , "col4" , "value", 3,
"g2", "rowlabel3", NA, NA, "mycol5", "value", 3,
#big n's
NA, NA, "column cols", NA, NA , "bigN", 18,
NA, NA, "column cols", "cols 1,2", NA , "bigN", 12,
NA, NA, "column cols", "col 4" , "col4" , "bigN", 6,
NA, NA, NA, NA, "mycol3", "bigN", 6,
)
auto_tfrmt <- tfrmt(
group = group,
label = label,
param = parm,
value = val,
column = c(span2, span1, my_col),
body_plan = body_plan(
frmt_structure(group_val = ".default", label_val = ".default", frmt("x"))
),
col_plan = col_plan(
group,
label,
starts_with("col"),
new_col_3 = mycol3,
-mycol5
),
row_grp_plan = row_grp_plan(
label_loc = element_row_grp_loc(location = "spanning")),
big_n = big_n_structure(param_val = "bigN")
)
auto <- apply_tfrmt(.data = dat, tfrmt = auto_tfrmt) %>%
names()
man <- c("group" , "label",
"column cols\nN = 18___tlang_delim___cols 1,2\nN = 12___tlang_delim___col1", "column cols\nN = 18___tlang_delim___cols 1,2\nN = 12___tlang_delim___col2",
"column cols\nN = 18___tlang_delim___col 4___tlang_delim___col4\nN = 6" , "new_col_3\nN = 6",
"..tfrmt_row_grp_lbl")
expect_equal(auto, man)
# try with empty strings rather than NA
dat_blank <- dat %>%
mutate(across(where(is.character), ~replace_na(.x, "")))
auto_blank <- apply_tfrmt(.data = dat_blank, tfrmt = auto_tfrmt) %>%
names()
expect_equal(auto_blank, man)
})
test_that("Multiple big N params", {
data <- tibble(Group = rep(c("Age (y)", "Sex", "Age (y)", "Sex"), c(3, 3, 6,12)),
Label = rep(c("n", "Mean (SD)", "Male","Female"), c(6, 6,6,6)),
Column = rep(c("Placebo", "Treatment", "Total"), times = 8),
Param = rep(c("n", "mean", "sd", "n", "pct", "n", "pct"), c(6, 3, 3, 3,3,3,3)),
Value = c(15,13,28,14,13,27,73.56, 74.231,71.84,9.347,7.234,8.293,8,7,15,8/14,7/13,15/27,6,6,12,6/14,6/13,12/27
)
) %>%
# Note because tfrmt only does rounding we will need to have the percents multiplied by 100
mutate(Value = case_when(Param == "pct" ~ Value * 100,
TRUE ~ Value),
ord1 = if_else(Group == "Age (y)", 1, 2),
ord2 = if_else(Label == "n", 1, 2))
big_ns <- tibble(Column = c("Placebo", "Treatment", "Total"),
Param = c("bigN", "big_n", "big_n"),
Value = c(30,30,60))
data <- bind_rows(data, big_ns)
auto <- tfrmt(
group = Group,
label = Label,
column = Column,
value = Value,
param = Param,
sorting_cols = c(ord1, ord2),
body_plan = body_plan(
frmt_structure(group_val = ".default",
label_val = ".default",
frmt_combine("{n} {pct}",
n = frmt("X"),
pct = frmt("(xx.x%)", missing = " ")
)
),
frmt_structure(group_val = "Age (y)", label_val = "Mean (SD)",
frmt_combine("{mean} ({sd})",
mean = frmt("XX.X"),
sd = frmt("x.xx")
)
),
frmt_structure(group_val = ".default", label_val = "n", frmt("xx"))
),
col_plan = col_plan(everything(), -starts_with("ord"), "Total"),
row_grp_plan = row_grp_plan(
row_grp_structure(group_val = ".default", element_block(post_space = " "))
),
big_n = big_n_structure(param_val = c("bigN", "big_n"))
) %>%
apply_tfrmt(.data = data, tfrmt = ., mock = FALSE) %>%
names()
man <- big_ns %>%
mutate(foo = str_c(Column, "\nN = ", Value)) %>%
pull(foo) %>%
c("Label", . , "..tfrmt_row_grp_lbl")
expect_equal(auto, man)
})
test_that("Overlapping Big N's",{
data <- tibble(Group = rep(c("Age (y)", "Sex", "Age (y)", "Sex"), c(3, 3, 6,12)),
Label = rep(c("n", "Mean (SD)", "Male","Female"), c(6, 6,6,6)),
Column = rep(c("Placebo", "Treatment", "Total"), times = 8),
Param = rep(c("n", "mean", "sd", "n", "pct", "n", "pct"), c(6, 3, 3, 3,3,3,3)),
Value = c(15,13,28,14,13,27,73.56, 74.231,71.84,9.347,7.234,8.293,8,7,15,8/14,7/13,15/27,6,6,12,6/14,6/13,12/27
)
) %>%
# Note because tfrmt only does rounding we will need to have the percents multiplied by 100
mutate(Value = case_when(Param == "pct" ~ Value * 100,
TRUE ~ Value),
ord1 = if_else(Group == "Age (y)", 1, 2),
ord2 = if_else(Label == "n", 1, 2))
big_ns <- tibble(Column = c("Placebo", "Treatment", "Total", "Total"),
Param = "bigN",
Value = c(30,30,60, 65))
data <- bind_rows(data, big_ns)
tfrmt_test <- tfrmt(
group = Group,
label = Label,
column = Column,
value = Value,
param = Param,
sorting_cols = c(ord1, ord2),
body_plan = body_plan(
frmt_structure(group_val = ".default",
label_val = ".default",
frmt_combine("{n} {pct}",
n = frmt("X"),
pct = frmt("(xx.x%)", missing = " ")
)
),
frmt_structure(group_val = "Age (y)", label_val = "Mean (SD)",
frmt_combine("{mean} ({sd})",
mean = frmt("XX.X"),
sd = frmt("x.xx")
)
),
frmt_structure(group_val = ".default", label_val = "n", frmt("xx"))
),
col_plan = col_plan(everything(), -starts_with("ord"), "Total"),
row_grp_plan = row_grp_plan(
row_grp_structure(group_val = ".default", element_block(post_space = " "))
),
big_n = big_n_structure(param_val = "bigN")
)
expect_warning(apply_tfrmt(.data = data, tfrmt = tfrmt_test, mock = FALSE) %>%
names())
})
test_that("Missing Big N in dataset", {
dat <- tibble::tribble(
~group, ~label, ~span2, ~span1, ~my_col, ~parm, ~val,
"g1", "rowlabel1", "column cols", "cols 1,2", "col1" , "value", 1,
"g1", "rowlabel1", "column cols", "cols 1,2", "col2" , "value", 1,
"g1", "rowlabel1", NA, NA, "mycol3", "value", 1,
"g1", "rowlabel1", "column cols", "col 4" , "col4" , "value", 1,
"g1", "rowlabel1", NA, NA, "mycol5", "value", 1,
"g1", "rowlabel2", "column cols", "cols 1,2", "col1" , "value", 2,
"g1", "rowlabel2", "column cols", "cols 1,2", "col2" , "value", 2,
"g1", "rowlabel2", NA, NA , "mycol3", "value", 2,
"g1", "rowlabel2", "column cols", "col 4" , "col4" , "value", 2,
"g1", "rowlabel2", NA, NA, "mycol5", "value", 2,
"g2", "rowlabel3", "column cols", "cols 1,2", "col1" , "value", 3,
"g2", "rowlabel3", "column cols", "cols 1,2", "col2" , "value", 3,
"g2", "rowlabel3", NA, NA, "mycol3", "value", 3,
"g2", "rowlabel3", "column cols", "col 4" , "col4" , "value", 3,
"g2", "rowlabel3", NA, NA, "mycol5", "value", 3,
)
tfrmt_test <- tfrmt(
group = group,
label = label,
param = parm,
value = val,
column = c(span2, span1, my_col),
body_plan = body_plan(
frmt_structure(group_val = ".default", label_val = ".default", frmt("x"))
),
col_plan = col_plan(
group,
label,
starts_with("col")
),
big_n = big_n_structure(param_val = "bigN")
)
expect_warning(apply_tfrmt(.data = dat, tfrmt = tfrmt_test, mock = FALSE))
})
test_that("using 'value' for values column where there may be conflict in big_n", {
dat <- tibble::tribble(
~group, ~label, ~span2, ~span1, ~my_col, ~parm, ~value,
"g1", "rowlabel1", "column cols", "cols 1,2", "col1" , "value", 1,
"g1", "rowlabel1", "column cols", "cols 1,2", "col2" , "value", 1,
"g1", "rowlabel1", NA, NA, "mycol3", "value", 1,
"g1", "rowlabel1", "column cols", "col 4" , "col4" , "value", 1,
"g1", "rowlabel1", NA, NA, "mycol5", "value", 1,
"g1", "rowlabel2", "column cols", "cols 1,2", "col1" , "value", 2,
"g1", "rowlabel2", "column cols", "cols 1,2", "col2" , "value", 2,
"g1", "rowlabel2", NA, NA , "mycol3", "value", 2,
"g1", "rowlabel2", "column cols", "col 4" , "col4" , "value", 2,
"g1", "rowlabel2", NA, NA, "mycol5", "value", 2,
"g2", "rowlabel3", "column cols", "cols 1,2", "col1" , "value", 3,
"g2", "rowlabel3", "column cols", "cols 1,2", "col2" , "value", 3,
"g2", "rowlabel3", NA, NA, "mycol3", "value", 3,
"g2", "rowlabel3", "column cols", "col 4" , "col4" , "value", 3,
"g2", "rowlabel3", NA, NA, "mycol5", "value", 3,
#big n's
NA, NA, "column cols", NA, NA , "bigN", 18,
NA, NA, "column cols", "cols 1,2", NA , "bigN", 12,
NA, NA, "column cols", "col 4" , "col4" , "bigN", 6,
NA, NA, NA, NA, "mycol3", "bigN", 6,
)
auto <- tfrmt(
group = group,
label = label,
param = parm,
value = value,
column = c(span2, span1, my_col),
body_plan = body_plan(
frmt_structure(group_val = ".default", label_val = ".default", frmt("x"))
),
col_plan = col_plan(
group,
label,
starts_with("col"),
new_col_3 = mycol3,
-mycol5
),
big_n = big_n_structure(param_val = "bigN"),
row_grp_plan = row_grp_plan(
label_loc = element_row_grp_loc(location = "spanning"))
) %>%
apply_tfrmt(.data = dat, tfrmt = .) %>%
names()
man <- c("group" , "label",
"column cols\nN = 18___tlang_delim___cols 1,2\nN = 12___tlang_delim___col1", "column cols\nN = 18___tlang_delim___cols 1,2\nN = 12___tlang_delim___col2",
"column cols\nN = 18___tlang_delim___col 4___tlang_delim___col4\nN = 6" , "new_col_3\nN = 6",
"..tfrmt_row_grp_lbl" )
expect_equal(auto, man)
})
test_that("Test big n with footnotes", {
# Create mock data
df <- tidyr::crossing(
group = c("group 1", "group 2"),
label = c("label 1", "label 2"),
column = c("PL", "T1", "T2", "T1&T2"),
param = c("count", "percent")
)
# This one is used for examples 5 and 6
span_df <- df %>% dplyr::mutate(span = dplyr::case_when(column == "PL" ~ "Placebo",
column %in% c("T1", "T2", "T1&T2") == TRUE ~ "Treatment"))
span_df_big_n <- dplyr::bind_rows(
span_df,
tibble::tibble(
group = NA,
label = NA,
column = c("T1","T2","T1&T2"),
param = "big_n",
span = NA
)
)
# Add specification
big_n_footnote_plan_gt <- tfrmt(
value = fake_value,
group = group,
label = label,
column = c("span", "column"),
param = param,
row_grp_plan = row_grp_plan(
row_grp_structure(group_val = ".default",
element_block(post_space = " ")) ),
body_plan = body_plan(
frmt_structure(group_val = ".default", label_val = ".default",
frmt_combine("{count} ({percent})",
count = frmt("xx"),
percent = frmt("xx.x")))
),
col_plan = col_plan(
group, label,
span_structure(span = c("Placebo"),
column = c("PL")),
span_structure(span = c("Treatment"),
column = c("T1", "T2", "T1&T2"))
),
# Add footnote here
footnote_plan = footnote_plan(
footnote_structure(
footnote_text = "Footnote goes here",
column_val = list(span = "Treatment", column = "T1&T2")
),
footnote_structure(
footnote_text = "Footnote goes here 2",
group_val = list(group = "group 1"),
label_val = list(label = "label 1"),
column_val = list(span = "Treatment", column = "T1")
),
footnote_structure(
footnote_text = "Footnote goes here 3",
label_val = list(label = "label 1"),
column_val = list(span = "Treatment", column = "T1")
),
footnote_structure(
footnote_text = "Footnote goes here 4",
label_val = list(label = "label 1"),
),
footnote_structure(
footnote_text = "Footnote goes here 5",
group_val = list(group = "group 1")
),
footnote_structure(
footnote_text = "Footnote goes here 6",
label_val = list(label = "label 1"),
column_val = list(span = "Treatment", column = c("T2"))
)
),
big_n = big_n_structure(
param_val = "big_n"
)
) %>%
print_mock_gt(span_df_big_n)
## ensure big_n got applied
expect_equal(
names(big_n_footnote_plan_gt$`_data`),
c("label", "Placebo___tlang_delim___PL", "Treatment___tlang_delim___T1\nN = xx",
"Treatment___tlang_delim___T2\nN = xx", "Treatment___tlang_delim___T1&T2\nN = xx",
"..tfrmt_row_grp_lbl")
)
## confirm location of footnotes gets recorded correctly
expect_equal(
big_n_footnote_plan_gt$`_footnotes` %>%
select(locname, colname, locnum, rownum, footnotes) |>
as_tibble(),
tibble(
locname = c(
"columns_columns",
"data",
"data",
"data",
"stub",
"stub",
"stub",
"data",
"data"
),
colname = c(
"Treatment___tlang_delim___T1&T2\nN = xx",
"Treatment___tlang_delim___T1\nN = xx",
"Treatment___tlang_delim___T1\nN = xx",
"Treatment___tlang_delim___T1\nN = xx",
NA,
NA,
NA,
"Treatment___tlang_delim___T2\nN = xx",
"Treatment___tlang_delim___T2\nN = xx"
),
locnum = c(4, 5, 5, 5, 5, 5, 5, 5, 5),
rownum = c(NA, 2L, 2L, 6L, 2L, 6L, 1L, 2L, 6L),
footnotes = list(
"Footnote goes here",
"Footnote goes here 2",
"Footnote goes here 3",
"Footnote goes here 3",
"Footnote goes here 4",
"Footnote goes here 4",
"Footnote goes here 5",
"Footnote goes here 6",
"Footnote goes here 6"
)
)
)
})
test_that("big Ns vary by page",{
data <- tibble(Group = rep(c("Age (y)", "Sex"), c(3, 3)),
Label = rep("n",6),
Column = rep(c("Placebo", "Treatment", "Total"), times = 2),
Param = rep("n",6),
Value = c(12, 14, 31, 20, 32, 18)
) %>%
mutate(ord1 = if_else(Group == "Age (y)", 1, 2))
big_ns <- data %>%
summarise(.by = c(Group, Column), Value = sum(Value)) %>%
mutate(Param = "big_N")
data <- bind_rows(data, big_ns)
mytfrmt <- tfrmt(
group = Group,
label = Label,
column = Column,
value = Value,
param = Param,
sorting_cols = ord1,
body_plan = body_plan(
frmt_structure(group_val = ".default", label_val = ".default", frmt("xx"))
),
col_plan = col_plan(everything(), -starts_with("ord"), "Total"),
row_grp_plan = row_grp_plan(
row_grp_structure(group_val = ".default", element_block(post_space = " "))
),
page_plan = page_plan(
page_structure(group_val = ".default")
),
big_n = big_n_structure(param_val = c("big_N"), by_page = TRUE)
)
auto <- mytfrmt %>%
apply_tfrmt(.data = data, tfrmt = ., mock = FALSE)
auto_names <- map(auto, names)
man_names <- list(
c("Label", "Placebo\nN = 12", "Treatment\nN = 14", "Total\nN = 31", "..tfrmt_row_grp_lbl"),
c("Label", "Placebo\nN = 20", "Treatment\nN = 32", "Total\nN = 18", "..tfrmt_row_grp_lbl")
)
expect_equal(auto_names, man_names)
})
test_that("big Ns constant by page",{
# big Ns are constant by page
data <- tibble(Group = rep(c("Age (y)", "Sex"), c(3, 3)),
Label = rep("n",6),
Column = rep(c("Placebo", "Treatment", "Total"), times = 2),
Param = rep("n",6),
Value = c(12, 14, 31, 20, 32, 18)
) %>%
mutate(ord1 = if_else(Group == "Age (y)", 1, 2))
big_ns <- data %>%
summarise(.by = c( Column), Value = sum(Value)) %>%
mutate(Param = "big_N")
data <- bind_rows(data, big_ns)
mytfrmt <- tfrmt(
group = Group,
label = Label,
column = Column,
value = Value,
param = Param,
sorting_cols = ord1,
body_plan = body_plan(
frmt_structure(group_val = ".default", label_val = ".default", frmt("xx"))
),
col_plan = col_plan(everything(), -starts_with("ord"), "Total"),
row_grp_plan = row_grp_plan(
row_grp_structure(group_val = ".default", element_block(post_space = " "))
),
page_plan = page_plan(
page_structure(group_val = ".default")
),
big_n = big_n_structure(param_val = c("big_N"), by_page = FALSE)
)
auto <- mytfrmt %>%
apply_tfrmt(.data = data, tfrmt = ., mock = FALSE)
expect_equal(
map(auto, names),
list(
c("Label","Placebo\nN = 32","Treatment\nN = 46","Total\nN = 49","..tfrmt_row_grp_lbl"),
c("Label","Placebo\nN = 32","Treatment\nN = 46","Total\nN = 49","..tfrmt_row_grp_lbl")
)
)
# big Ns constant by page but by_page=TRUE in the big_n_structure gives message
mytfrmt <- tfrmt(
group = Group,
label = Label,
column = Column,
value = Value,
param = Param,
sorting_cols = ord1,
body_plan = body_plan(
frmt_structure(group_val = ".default", label_val = ".default", frmt("xx"))
),
col_plan = col_plan(everything(), -starts_with("ord"), "Total"),
row_grp_plan = row_grp_plan(
row_grp_structure(group_val = ".default", element_block(post_space = " "))
),
page_plan = page_plan(
page_structure(group_val = ".default")
),
big_n = big_n_structure(param_val = c("big_N"), by_page = TRUE)
)
expect_message(
auto <- mytfrmt %>%
apply_tfrmt(.data = data, tfrmt = ., mock = FALSE),
"Mismatch between big Ns and page_plan. For varying big N's by page (`by_page` = TRUE in `big_n_structure`), data must contain 1 big N value per unique grouping variable/value set to \".default\" in `page_plan`",
fixed = TRUE
)
expect_equal(
map(auto, names),
list(
c("Label","Placebo\nN = 32","Treatment\nN = 46","Total\nN = 49","..tfrmt_row_grp_lbl"),
c("Label","Placebo\nN = 32","Treatment\nN = 46","Total\nN = 49","..tfrmt_row_grp_lbl")
)
)
# too many big Ns provided with by_page = FALSE
data <- tibble(Group = rep(c("Age (y)", "Sex"), c(3, 3)),
Label = rep("n",6),
Column = rep(c("Placebo", "Treatment", "Total"), times = 2),
Param = rep("n",6),
Value = c(12, 14, 31, 20, 32, 18)
) %>%
mutate(ord1 = if_else(Group == "Age (y)", 1, 2))
big_ns <- data %>%
summarise(.by = c(Group, Column), Value = sum(Value)) %>%
mutate(Param = "big_N")
data <- bind_rows(data, big_ns)
mytfrmt <- tfrmt(
group = Group,
label = Label,
column = Column,
value = Value,
param = Param,
sorting_cols = ord1,
body_plan = body_plan(
frmt_structure(group_val = ".default", label_val = ".default", frmt("xx"))
),
col_plan = col_plan(everything(), -starts_with("ord"), "Total"),
row_grp_plan = row_grp_plan(
row_grp_structure(group_val = ".default", element_block(post_space = " "))
),
page_plan = page_plan(
page_structure(group_val = ".default")
),
big_n = big_n_structure(param_val = c("big_N"), by_page = FALSE)
)
expect_warning(
auto <- mytfrmt %>%
apply_tfrmt(.data = data, tfrmt = ., mock = FALSE) ,
paste(c("The following columns have multiple Big N's associated with them :",
"c(\"Placebo\", \"Total\", \"Treatment\")"), collapse = "\n"),
fixed = TRUE
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.