第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 という列名を持つデータフレームとして返ってきています。この結果は変数に代入してさらに加工することができます。