次のタスクはかなり頻繁に発生すると思います。各グループとすべてのデータの要約を計算し、結果を 1 つのデータフレームに表示します。たとえば、アヤメのデータフレームの場合、各種の各列の平均を計算できます。
library(tidyverse)
df_groups <- iris %>%
group_by(Species) %>%
summarise_at(vars(-Species), mean)
>df_groups
# A tibble: 3 × 5
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
<fctr> <dbl> <dbl> <dbl> <dbl>
1 setosa 5.006 3.428 1.462 0.246
2 versicolor 5.936 2.770 4.260 1.326
3 virginica 6.588 2.974 5.552 2.026
すべての種の各列の平均を計算し、唯一の行を「すべての種」と呼ぶことができます。
df_all <- iris %>%
summarise_at(vars(-Species), mean) %>%
mutate(Species='All Species')
> df_all
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.8433 3.0573 3.758 1.1993 All Species
最後に、両方のデータフレームをバインドすることで、目的の出力を取得します。
df_all %>% bind_rows(df_groups) %>%
select(Species, everything()) # make Species the first column
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1 All Species 5.8433 3.0573 3.758 1.1993
2 setosa 5.0060 3.4280 1.462 0.2460
3 versicolor 5.9360 2.7700 4.260 1.3260
4 virginica 6.5880 2.9740 5.552 2.0260
私の質問は次のとおりです。これはすべて 1 つのパイプライン内で実行できますか (2 つのデータフレームを作成してからバインドする必要はありません)。