# Group rows

This vignette introduces nice and easy way to display grouped data frame created by `dplyr::group_by`.

    library(ftExtra)
    library(dplyr)

    grouped_iris <- iris %>%
      group_by(Species) %>%
      slice(1, 2)

    grouped_mtcars <- mtcars %>%
      mutate(model = rownames(mtcars)) %>%
      head() %>%
      select(model, cyl, mpg, disp, am) %>%
      group_by(am, cyl)

# Groups as titles

## Single grouping columns

    grouped_iris %>% as_flextable()

Sepal.Length | Sepal.Width | Petal.Length | Petal.Width
--- | --- | --- | ---
Species: setosa
5.1 | 3.5 | 1.4 | 0.2
4.9 | 3.0 | 1.4 | 0.2
Species: versicolor
7.0 | 3.2 | 4.7 | 1.4
6.4 | 3.2 | 4.5 | 1.5
Species: virginica
6.3 | 3.3 | 6.0 | 2.5
5.8 | 2.7 | 5.1 | 1.9

    grouped_iris %>% as_flextable(hide_grouplabel = TRUE)

Sepal.Length | Sepal.Width | Petal.Length | Petal.Width
--- | --- | --- | ---
setosa
5.1 | 3.5 | 1.4 | 0.2
4.9 | 3.0 | 1.4 | 0.2
versicolor
7.0 | 3.2 | 4.7 | 1.4
6.4 | 3.2 | 4.5 | 1.5
virginica
6.3 | 3.3 | 6.0 | 2.5
5.8 | 2.7 | 5.1 | 1.9

## Multiple grouping columns

    grouped_mtcars %>% as_flextable()

model | mpg | disp
--- | --- | ---
am: 1.0
cyl: 6.0
Mazda RX4 | 21.0 | 160
Mazda RX4 Wag | 21.0 | 160
am: 1.0
cyl: 4.0
Datsun 710 | 22.8 | 108
am: 0.0
cyl: 6.0
Hornet 4 Drive | 21.4 | 258
am: 0.0
cyl: 8.0
Hornet Sportabout | 18.7 | 360
am: 0.0
cyl: 6.0
Valiant | 18.1 | 225

# Groups as merged columns

By specifying `as_flextable(groups_to = 'merged')`, grouping variables are merged vertically. In this case, the default theme is changed to `flextable::theme_vanilla` because the booktab theme is not intuitive.

## Single grouping variable

    grouped_iris %>%
      as_flextable(groups_to = "merged")
    #> Warning: ftExtra:::as_flextable.data.frame is deprecated and will be removed in
    #> the future release. Consider using flextalbe's implementation by running
    #> `.S3method("as_flextable", "data.frame", flextable:::as_flextable.data.frame)`

Species | Sepal.Length | Sepal.Width | Petal.Length | Petal.Width
--- | --- | --- | --- | ---
setosa | 5.1 | 3.5 | 1.4 | 0.2
4.9 | 3.0 | 1.4 | 0.2
versicolor | 7.0 | 3.2 | 4.7 | 1.4
6.4 | 3.2 | 4.5 | 1.5
virginica | 6.3 | 3.3 | 6.0 | 2.5
5.8 | 2.7 | 5.1 | 1.9

## Multiple grouping variables

    grouped_mtcars %>%
      as_flextable(groups_to = "merged", groups_arrange = TRUE)
    #> Warning: ftExtra:::as_flextable.data.frame is deprecated and will be removed in
    #> the future release. Consider using flextalbe's implementation by running
    #> `.S3method("as_flextable", "data.frame", flextable:::as_flextable.data.frame)`

am | cyl | model | mpg | disp
--- | --- | --- | --- | ---
0 | 6 | Hornet 4 Drive | 21.4 | 258
Valiant | 18.1 | 225
8 | Hornet Sportabout | 18.7 | 360
1 | 4 | Datsun 710 | 22.8 | 108
6 | Mazda RX4 | 21.0 | 160
Mazda RX4 Wag | 21.0 | 160

    grouped_mtcars %>%
      as_flextable(groups_to = "merged", groups_arrange = FALSE)
    #> Warning: ftExtra:::as_flextable.data.frame is deprecated and will be removed in
    #> the future release. Consider using flextalbe's implementation by running
    #> `.S3method("as_flextable", "data.frame", flextable:::as_flextable.data.frame)`

am | cyl | model | mpg | disp
--- | --- | --- | --- | ---
1 | 6 | Mazda RX4 | 21.0 | 160
Mazda RX4 Wag | 21.0 | 160
4 | Datsun 710 | 22.8 | 108
0 | 6 | Hornet 4 Drive | 21.4 | 258
8 | Hornet Sportabout | 18.7 | 360
6 | Valiant | 18.1 | 225

## Position of grouping variables

Grouping variables are moved to left by default. If you want to keep their positions, specify `group_pos = 'asis'`.

    grouped_mtcars %>%
      as_flextable(groups_to = "merged", groups_pos = "asis") %>%
      flextable::theme_vanilla()
    #> Warning: ftExtra:::as_flextable.data.frame is deprecated and will be removed in
    #> the future release. Consider using flextalbe's implementation by running
    #> `.S3method("as_flextable", "data.frame", flextable:::as_flextable.data.frame)`

model | cyl | mpg | disp | am
--- | --- | --- | --- | ---
Mazda RX4 | 6 | 21.0 | 160 | 1
Mazda RX4 Wag | 21.0 | 160
Datsun 710 | 4 | 22.8 | 108
Hornet 4 Drive | 6 | 21.4 | 258 | 0
Hornet Sportabout | 8 | 18.7 | 360
Valiant | 6 | 18.1 | 225