Transpose a tibble of summary statistics in tidy format. Convenient
function for transposing the output of dplyr”s group_by
and
summarize
operation.
Transpose a 1 row numerical summary:
wide format
iris %>%
summarize(across(where(is.numeric), mean), .groups = "drop") -> sumr0
sumr0
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> 1 5.843333 3.057333 3.758 1.199333
long format
A grouped summary can be transposed by providing the name of the group column.
wide format
iris %>%
group_by(Species) %>%
summarize(across(where(is.numeric), mean), .groups = "drop") -> sumr1
sumr1
#> # A tibble: 3 × 5
#> Species Sepal.Length Sepal.Width Petal.Length Petal.Width
#> <fct> <dbl> <dbl> <dbl> <dbl>
#> 1 setosa 5.01 3.43 1.46 0.246
#> 2 versicolor 5.94 2.77 4.26 1.33
#> 3 virginica 6.59 2.97 5.55 2.03
long format
Supports transposing numerical summaries with multiple groups using tidyselect.
long format
iris %>%
mutate(Species1 = sample(Species)) %>%
group_by(Species, Species1) %>%
summarize(across(where(is.numeric), mean), .groups = "drop") -> sumr2
sumr2
#> # A tibble: 9 × 6
#> Species Species1 Sepal.Length Sepal.Width Petal.Length Petal.Width
#> <fct> <fct> <dbl> <dbl> <dbl> <dbl>
#> 1 setosa setosa 5.13 3.61 1.46 0.269
#> 2 setosa versicolor 4.99 3.34 1.46 0.217
#> 3 setosa virginica 4.93 3.38 1.47 0.258
#> 4 versicolor setosa 5.92 2.78 4.34 1.32
#> 5 versicolor versicolor 5.94 2.78 4.23 1.35
#> 6 versicolor virginica 5.95 2.75 4.2 1.3
#> 7 virginica setosa 6.73 3.11 5.73 2.08
#> 8 virginica versicolor 6.62 2.92 5.44 1.95
#> 9 virginica virginica 6.42 2.87 5.44 2.02
Group names are concatenated and pivoted.
wide format
sumr2 %>%
pivot_summary(matches("Spec"))
#> # A tibble: 4 × 10
#> column setosa_setosa setosa_versicolor setosa_virginica versicolor_setosa
#> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 Sepal.Leng… 5.13 4.99 4.93 5.92
#> 2 Sepal.Width 3.61 3.34 3.38 2.78
#> 3 Petal.Leng… 1.46 1.46 1.47 4.34
#> 4 Petal.Width 0.269 0.217 0.258 1.32
#> # ℹ 5 more variables: versicolor_versicolor <dbl>, versicolor_virginica <dbl>,
#> # virginica_setosa <dbl>, virginica_versicolor <dbl>,
#> # virginica_virginica <dbl>