Split a dataframe according to the levels of variables in the dataframe. Uses vparse() to interpret flexible input.
split_by(data., ..., omit = TRUE)
splitBy(formula, data, omit = TRUE)
# S3 method for class 'splitByData'
head(x, n = 6L, ...)
# S3 method for class 'splitByData'
tail(x, n = 6L, ...)
split_by.legacy(data, formula, drop = TRUE)
splitBy.legacy(formula, data = parent.frame(), drop = TRUE)
A data frame (or tibble) to split
Variables defining the groups
If TRUE (default), group-defining variables are omitted in each split group
A right hand sided formula (for the old interface)
A data frame (for the old interface)
A splitByData object.
An integer vector.
Obsolete
An object of class \"splitByData\" (a named list with group attributes)
split_by(CO2, ~Treatment+Type)
#> listentry Treatment Type
#> 1 chilled|Mississippi nonchilled Quebec
#> 22 chilled|Quebec chilled Quebec
#> 43 nonchilled|Mississippi nonchilled Mississippi
#> 64 nonchilled|Quebec chilled Mississippi
split_by(CO2, Treatment, Type)
#> listentry Treatment Type
#> 1 chilled|Mississippi nonchilled Quebec
#> 22 chilled|Quebec chilled Quebec
#> 43 nonchilled|Mississippi nonchilled Mississippi
#> 64 nonchilled|Quebec chilled Mississippi
split_by(CO2, c("Treatment", "Type"))
#> listentry Treatment Type
#> 1 chilled|Mississippi nonchilled Quebec
#> 22 chilled|Quebec chilled Quebec
#> 43 nonchilled|Mississippi nonchilled Mississippi
#> 64 nonchilled|Quebec chilled Mississippi
split_by(CO2, "Treatment", "Type")
#> listentry Treatment Type
#> 1 chilled|Mississippi nonchilled Quebec
#> 22 chilled|Quebec chilled Quebec
#> 43 nonchilled|Mississippi nonchilled Mississippi
#> 64 nonchilled|Quebec chilled Mississippi
x <- split_by(CO2, "Treatment", "Type")
head(x, 3)
#> $`chilled|Mississippi`
#> Plant conc uptake
#> 64 Mc1 95 10.5
#> 65 Mc1 175 14.9
#> 66 Mc1 250 18.1
#>
#> $`chilled|Quebec`
#> Plant conc uptake
#> 22 Qc1 95 14.2
#> 23 Qc1 175 24.1
#> 24 Qc1 250 30.3
#>
#> $`nonchilled|Mississippi`
#> Plant conc uptake
#> 43 Mn1 95 10.6
#> 44 Mn1 175 19.2
#> 45 Mn1 250 26.2
#>
#> $`nonchilled|Quebec`
#> Plant conc uptake
#> 1 Qn1 95 16.0
#> 2 Qn1 175 30.4
#> 3 Qn1 250 34.8
#>
tail(x, 3)
#> $`chilled|Mississippi`
#> Plant conc uptake
#> 82 Mc3 500 17.9
#> 83 Mc3 675 18.9
#> 84 Mc3 1000 19.9
#>
#> $`chilled|Quebec`
#> Plant conc uptake
#> 40 Qc3 500 38.9
#> 41 Qc3 675 39.6
#> 42 Qc3 1000 41.4
#>
#> $`nonchilled|Mississippi`
#> Plant conc uptake
#> 61 Mn3 500 28.5
#> 62 Mn3 675 28.1
#> 63 Mn3 1000 27.8
#>
#> $`nonchilled|Quebec`
#> Plant conc uptake
#> 19 Qn3 500 42.9
#> 20 Qn3 675 43.9
#> 21 Qn3 1000 45.5
#>
## Via wrapper:
foo2 <- function(x) {
x <- rlang::enquo(x)
split_by(CO2, !!x)
}
foo2(~Treatment)
#> listentry Treatment
#> 1 chilled nonchilled
#> 22 nonchilled chilled
## The "Old" interface
splitBy(~Treatment + Type, CO2)
#> listentry Treatment Type
#> 1 chilled|Mississippi nonchilled Quebec
#> 22 chilled|Quebec chilled Quebec
#> 43 nonchilled|Mississippi nonchilled Mississippi
#> 64 nonchilled|Quebec chilled Mississippi
splitBy(~Treatment + Type, data=CO2)
#> listentry Treatment Type
#> 1 chilled|Mississippi nonchilled Quebec
#> 22 chilled|Quebec chilled Quebec
#> 43 nonchilled|Mississippi nonchilled Mississippi
#> 64 nonchilled|Quebec chilled Mississippi
splitBy(c("Treatment", "Type"), data=CO2)
#> listentry Treatment Type
#> 1 chilled|Mississippi nonchilled Quebec
#> 22 chilled|Quebec chilled Quebec
#> 43 nonchilled|Mississippi nonchilled Mississippi
#> 64 nonchilled|Quebec chilled Mississippi