Split a dataframe into a non-nested list of subsets.
Usage
h_split_by_subgroups(data, subgroups, groups_lists = list())Arguments
- data
 (
data frame)
dataset to split.- subgroups
 (
character)
names of factor variables fromdataused to create subsets. Unused levels not present indataare dropped. Note that the order in this vector determines the order in the downstream table.- groups_lists
 (named
listoflist)
optionally contains for eachsubgroupsvariable a list, which specifies the new group levels via the names and the levels that belong to it in the character vectors that are elements of the list.
Examples
library(rtables)
df <- data.frame(
  x = c(1:5),
  y = factor(c("A", "B", "A", "B", "A"), levels = c("A", "B", "C")),
  z = factor(c("C", "C", "D", "D", "D"), levels = c("D", "C"))
)
formatters::var_labels(df) <- paste("label for", names(df))
h_split_by_subgroups(
  data = df,
  subgroups = c("y", "z")
)
#> $y.A
#> $y.A$df
#>   x y z
#> 1 1 A C
#> 2 3 A D
#> 3 5 A D
#> 
#> $y.A$df_labels
#>   subgroup var   var_label
#> 1        A   y label for y
#> 
#> 
#> $y.B
#> $y.B$df
#>   x y z
#> 1 2 B C
#> 2 4 B D
#> 
#> $y.B$df_labels
#>   subgroup var   var_label
#> 1        B   y label for y
#> 
#> 
#> $z.D
#> $z.D$df
#>   x y z
#> 1 3 A D
#> 2 4 B D
#> 3 5 A D
#> 
#> $z.D$df_labels
#>   subgroup var   var_label
#> 1        D   z label for z
#> 
#> 
#> $z.C
#> $z.C$df
#>   x y z
#> 1 1 A C
#> 2 2 B C
#> 
#> $z.C$df_labels
#>   subgroup var   var_label
#> 1        C   z label for z
#> 
#> 
h_split_by_subgroups(
  data = df,
  subgroups = c("y", "z"),
  groups_lists = list(
    y = list("AB" = c("A", "B"), "C" = "C")
  )
)
#> $y.AB
#> $y.AB$df
#>   x y z
#> 1 1 A C
#> 2 2 B C
#> 3 3 A D
#> 4 4 B D
#> 5 5 A D
#> 
#> $y.AB$df_labels
#>   subgroup var   var_label
#> 1       AB   y label for y
#> 
#> 
#> $z.D
#> $z.D$df
#>   x y z
#> 1 3 A D
#> 2 4 B D
#> 3 5 A D
#> 
#> $z.D$df_labels
#>   subgroup var   var_label
#> 1        D   z label for z
#> 
#> 
#> $z.C
#> $z.C$df
#>   x y z
#> 1 1 A C
#> 2 2 B C
#> 
#> $z.C$df_labels
#>   subgroup var   var_label
#> 1        C   z label for z
#> 
#>