knitr::opts_chunk$set(comment = "#")
```{css, echo=FALSE}
.sourcecode { background-color:lightblue; } .reveal .r code { white-space: pre; }
## Introduction Often the data from one column is considered the reference/baseline/comparison group and is compared to the data from the other columns. For example, lets calculate the average age: ```r library(rtables) lyt <- basic_table() %>% split_cols_by("ARM") %>% analyze("AGE") tbl <- build_table(lyt, DM) tbl
and then the difference of the average AGE
between the placebo arm
and the other arms:
lyt2 <- basic_table() %>% split_cols_by("ARM", ref_group = "B: Placebo") %>% analyze("AGE", afun = function(x, .ref_group) { in_rows( "Difference of Averages" = rcell(mean(x) - mean(.ref_group), format = "xx.xx") ) }) tbl2 <- build_table(lyt2, DM) tbl2
Note that the column order has changed and the reference group is displayed in the first column.
In cases where we want cells to be blank in the reference column,
(e.g., "B: Placebo") we use non_ref_rcell()
instead of rcell()
,
and pass .in_ref_col
as the second argument:
lyt3 <- basic_table() %>% split_cols_by("ARM", ref_group = "B: Placebo") %>% analyze( "AGE", afun = function(x, .ref_group, .in_ref_col) { in_rows( "Difference of Averages" = non_ref_rcell(mean(x) - mean(.ref_group), is_ref = .in_ref_col, format = "xx.xx") ) } ) tbl3 <- build_table(lyt3, DM) tbl3 lyt4 <- basic_table() %>% split_cols_by("ARM", ref_group = "B: Placebo") %>% analyze( "AGE", afun = function(x, .ref_group, .in_ref_col) { in_rows( "Difference of Averages" = non_ref_rcell(mean(x) - mean(.ref_group), is_ref = .in_ref_col, format = "xx.xx"), "another row" = non_ref_rcell("aaa", .in_ref_col) ) } ) tbl4 <- build_table(lyt4, DM) tbl4
You can see which arguments are available for afun
in the manual for
analyze()
.
When adding row-splitting the reference data may be represented by the column with or without row splitting. For example:
lyt5 <- basic_table(show_colcounts = TRUE) %>% split_cols_by("ARM", ref_group = "B: Placebo") %>% split_rows_by("SEX", split_fun = drop_split_levels) %>% analyze("AGE", afun = function(x, .ref_group, .ref_full, .in_ref_col) { in_rows( "is reference (.in_ref_col)" = rcell(.in_ref_col), "ref cell N (.ref_group)" = rcell(length(.ref_group)), "ref column N (.ref_full)" = rcell(length(.ref_full)) ) }) tbl5 <- build_table(lyt5, subset(DM, SEX %in% c("M", "F"))) tbl5
The data assigned to .ref_full
is the full data of the reference
column whereas the data assigned to .ref_group
respects the
subsetting defined by row-splitting and hence is from the same subset
as the argument x
or df
to afun
.
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.