sort_at_path | R Documentation |
Main sorting function to order the substructure of a TableTree
at a particular Path in the table tree.
sort_at_path(
tt,
path,
scorefun,
decreasing = NA,
na.pos = c("omit", "last", "first"),
.prev_path = character()
)
tt |
|
path |
character. A vector path for a position within the structure of a
|
scorefun |
function. Scoring function, should accept the type of
children directly under the position at |
decreasing |
logical(1). Should the the scores generated by
|
na.pos |
character(1). What should be done with children (sub-trees/rows)
with |
.prev_path |
character. Internal detail, do not set manually. |
The path
here can include the "wildcard" "*"
as a step,
which translates roughly to any node/branching element and means
that each child at that step will be separately sorted based on
scorefun
and the remaining path
entries. This can occur
multiple times in a path.
Note that sorting needs a deeper understanding of table structure in
rtables
. Please consider reading related vignette
(Sorting and Pruning)
and explore table structure with useful functions like table_structure()
and row_paths_summary()
. It is also very important to understand the
difference between "content" rows and "data" rows. The first one analyzes
and describes the split variable generally and is generated with
summarize_row_groups()
, while the second one is commonly produced by
calling one of the various analyze()
instances.
Built-in score functions are cont_n_allcols()
and cont_n_onecol()
.
They are both working with content rows (coming from summarize_row_groups()
)
while a custom score function needs to be used on DataRow
s. Here, some
useful descriptor and accessor functions (coming from related vignette):
cell_values()
- Retrieves a named list of a TableRow
or
TableTree
object's values.
obj_name()
- Retrieves the name of an object. Note this can differ
from the label that is displayed (if any is) when printing.
obj_label()
- Retrieves the display label of an object. Note this
can differ from the name that appears in the path.
content_table()
- Retrieves a TableTree
object's content table
(which contains its summary rows).
tree_children()
- Retrieves a TableTree
object's direct children
(either subtables, rows or possibly a mix thereof, though that
should not happen in practice).
A TableTree
with the same structure as tt
with the exception
that the requested sorting has been done at path
.
cont_n_allcols()
and cont_n_onecol()
# Creating a table to sort
# Function that gives two statistics per table-tree "leaf"
more_analysis_fnc <- function(x) {
in_rows(
"median" = median(x),
"mean" = mean(x),
.formats = "xx.x"
)
}
# Main layout of the table
raw_lyt <- basic_table() %>%
split_cols_by("ARM") %>%
split_rows_by(
"RACE",
split_fun = drop_and_remove_levels("WHITE") # dropping WHITE levels
) %>%
summarize_row_groups() %>%
split_rows_by("STRATA1") %>%
summarize_row_groups() %>%
analyze("AGE", afun = more_analysis_fnc)
# Creating the table and pruning empty and NAs
tbl <- build_table(raw_lyt, DM) %>%
prune_table()
# Peek at the table structure to understand how it is built
table_structure(tbl)
# Sorting only ASIAN sub-table, or, in other words, sorting STRATA elements for
# the ASIAN group/row-split. This uses content_table() accessor function as it
# is a "ContentRow". In this case, we also base our sorting only on the second column.
sort_at_path(tbl, c("ASIAN", "STRATA1"), cont_n_onecol(2))
# Custom scoring function that is working on "DataRow"s
scorefun <- function(tt) {
# Here we could use browser()
sum(unlist(row_values(tt))) # Different accessor function
}
# Sorting mean and median for all the AGE leaves!
sort_at_path(tbl, c("RACE", "*", "STRATA1", "*", "AGE"), scorefun)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.