第4章 Rベースで抽出・集計 ・ ノック 52 / 100 ・ [[000 - はじめに(使い方と目次)|目次]]<br>
← 前 [[051 - グループごとの平均を求める]] ・ 次 → [[053 - 列ごとに一括計算する]]
> [!info] `aggregate()` でデータフレーム形式の集計表を作る
> `tapply()` は結果を名前付きベクトル(数字の並び)で返しますが、`aggregate()` は結果をデータフレームとして返します。後の処理がしやすくなるため、集計結果をさらに扱いたいときに便利です。書き方は `aggregate(集計したい列 ~ グループ列, data = データ, FUN = 関数)` で、`~`(チルダ)は「〜によって分けて」という意味です。この記法は統計モデルでも頻繁に登場します。
## 問題
`aggregate()` を使って、Species ごとの `Sepal.Length` の平均をデータフレーム形式で求めてください。
> [!tip] ヒント
> `aggregate(Sepal.Length ~ Species, data = iris, FUN = mean)` と書きます。`~` の左が集計対象、右がグループです。
> [!success]- 回答を見る
> ```r
> aggregate(Sepal.Length ~ Species, data = iris, FUN = mean)
> ```
> ```
> Species Sepal.Length
> 1 setosa 5.006
> 2 versicolor 5.936
> 3 virginica 6.588
> ```
> `tapply()` の結果と数値は同じですが、Species と Sepal.Length という列名を持つデータフレームとして返ってきています。この結果は変数に代入してさらに加工することができます。