Most data operations are done on groups defined by variables.
group_by
will group the data.table by selected variables (setting
them as keys), and arrange them in ascending order.
group_exe
could do computations by group, it receives an object
returned by group_by
.
group_by(.data, ...)
group_exe(.data, ...)
groups(x)
ungroup(x)
A data.table with keys
For mutate
and summarise
, it is recommended to
use the innate "by" parameter, which is faster. Once the data.table is
grouped, the order is changed forever.
groups()
could return a character vector of specified groups.
ungroup()
would delete the keys in data.table.
a = as.data.table(iris)
a
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <num> <num> <num> <num> <fctr>
#> 1: 5.1 3.5 1.4 0.2 setosa
#> 2: 4.9 3.0 1.4 0.2 setosa
#> 3: 4.7 3.2 1.3 0.2 setosa
#> 4: 4.6 3.1 1.5 0.2 setosa
#> 5: 5.0 3.6 1.4 0.2 setosa
#> ---
#> 146: 6.7 3.0 5.2 2.3 virginica
#> 147: 6.3 2.5 5.0 1.9 virginica
#> 148: 6.5 3.0 5.2 2.0 virginica
#> 149: 6.2 3.4 5.4 2.3 virginica
#> 150: 5.9 3.0 5.1 1.8 virginica
a %>%
group_by(Species) %>%
group_exe(
head(3)
)
#> Key: <Species>
#> Species Sepal.Length Sepal.Width Petal.Length Petal.Width
#> <fctr> <num> <num> <num> <num>
#> 1: setosa 5.1 3.5 1.4 0.2
#> 2: setosa 4.9 3.0 1.4 0.2
#> 3: setosa 4.7 3.2 1.3 0.2
#> 4: versicolor 7.0 3.2 4.7 1.4
#> 5: versicolor 6.4 3.2 4.5 1.5
#> 6: versicolor 6.9 3.1 4.9 1.5
#> 7: virginica 6.3 3.3 6.0 2.5
#> 8: virginica 5.8 2.7 5.1 1.9
#> 9: virginica 7.1 3.0 5.9 2.1
groups(a)
#> [1] "Species"
ungroup(a)
groups(a)
#> NULL