1

次のタスクはかなり頻繁に発生すると思います。各グループとすべてのデータの要約を計算し、結果を 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 つのデータフレームを作成してからバインドする必要はありません)。

4

0 に答える 0