R 使い方 集計に便利な関数 aggregate

スポンサーリンク

データフレームを使って集計を行う場合に、使いやすい関数があります。aggregate関数です。データフレームの計算にはapply系の関数がよく使われますが、わかりづらいという方にはオススメの方法です。

とにかく早く問題解決したい人はこちら>>直接、データ解析相談

関連記事
R 使い方 欠損値 NA データフレームのNAを探す方法
R 使い方 欠損値 NA 除去方法
R 関数 maxの位置・minの位置を求める
R 使い方 データフレーム 累積和を求める

aggregate関数の使い方

aggregate関数は、データフレームについて「指定した列をカテゴリで分けて集計する」というような計算を行うことができます。引数に、集計したい列(群)・識別したい条件(群)・関数を指定します。

単純構造

構造が単純な場合は、table関数でも同様のことができます。

R> df <- data.frame(name = c("a","a","b","b","b","c","c","c","c"))
  name
1    a
2    a
3    b
4    b
5    b
6    c
7    c
8    c
9    c

R> table(df)
df
a b c 
2 3 4 

R> aggregate(df, by=list(df$name), length)
  Group.1 name
1       a    2
2       b    3
3       c    4

カテゴリ毎に集計する

データフレームの列が多い場合はaggregate関数を使ったほうが便利です。集計したい列(x)、カテゴリなどの分けたい条件(by)、計算に使いたい関数(FUN)を指定します。

R> df <- data.frame(name = c("a","a","b","b","b","c","c","c","c"),
                    val1 = c(0, 1, 1, 2, 3, 5, 8, 13, 21),
                    val2 = c(1, 2, 3, 4, 5, 6, 7,  8,  9))
R> df
  name val1 val2
1    a    0    1
2    a    1    2
3    b    1    3
4    b    2    4
5    b    3    5
6    c    5    6
7    c    8    7
8    c   13    8
9    c   21    9

R> aggregate(x=df[c("val1")], by=list(df$name), FUN=sum) # val1のみ集計
  Group.1 val1
1       a    1
2       b    6
3       c   47

R> aggregate(x=df[c("val1","val2")], by=list(df$name), sum) # val1,2について
  Group.1 val1 val2
1       a    1    3
2       b    6   12
3       c   47   30

便利な使い方

集計したい列や、分けたい条件は複数指定することができます。

R> df <- data.frame(name = c("a","a","b","b","b","c","c","c","c"),
	            type = c("A","A","A","A","B","B","B","B","B"),
                    val1 = c(0, 1, 1, 2, 3, 5, 8, 13, 21),
                    val2 = c(1, 2, 3, 4, 5, 6, 7,  8,  9))
R> df
  name type val1 val2
1    a    A    0    1
2    a    A    1    2
3    b    A    1    3
4    b    A    2    4
5    b    B    3    5
6    c    B    5    6
7    c    B    8    7
8    c    B   13    8
9    c    B   21    9

R> aggregate(x=df[c("val1","val2")], by=list(df$name,df$type), sum) # 複数条件
  Group.1 Group.2 val1 val2
1       a       A    1    3
2       b       A    3    7
3       b       B    3    5
4       c       B   47   30

# データセット irisでSpecies毎にmaxを計算
R> iris
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa
4            4.6         3.1          1.5         0.2     setosa
5            5.0         3.6          1.4         0.2     setosa
...

R> aggregate(x=iris[-5], by=list(species=iris$Species), FUN=max)
     species Sepal.Length Sepal.Width Petal.Length Petal.Width
1     setosa          5.8         4.4          1.9         0.6
2 versicolor          7.0         3.4          5.1         1.8
3  virginica          7.9         3.8          6.9         2.5
スポンサーリンク

よく使われるapply系関数

apply系関数を指定して集計した場合

apply関数とtapply関数を組み合わせて、同様の集計を行ってみました。

R> apply(iris[-5], 2, function(x){tapply(x, iris$Species, max)})
           Sepal.Length Sepal.Width Petal.Length Petal.Width
setosa              5.8         4.4          1.9         0.6
versicolor          7.0         3.4          5.1         1.8
virginica           7.9         3.8          6.9         2.5

関連記事
R 使い方 エラーバー グラフの描き方(tapply使用例)
R 使い方 ボックスプロット(box plot) グラフの描き方(tapply使用例)

論文・データ解析の支援

個別に直接相談できるのが良いと、たくさんの方にご利用頂いています。

とにかく早く問題解決したい人はこちら>>直接、データ解析相談
とにかく早く問題解決したい人はこちら>>直接、論文相談

関連記事1

スポンサーリンク
R plotのPDFやPNGへの保存 - PDFなら複数の画像保存も可能
Rのplot (グラフ) は、PDFやPNGファイルとして保存することができます。操作は、通常のグラフの描画と同じです。違うところは、前もって保存先のデバイスをオープンし、描画終了後に明示的にクローズするだけです。PDFなら1つのファイルに...
R 使い方 組込みデータセット iris データフレーム・ベクトル・リスト
Rのデータ型について学びます。使うデータは、組込みデータセットの「iris」です。irisの構造を眺めたり要約統計量を求めることで、データフレーム・ベクトル型・リスト型について簡単に学びます。とにかく早く問題解決したい人はこちら>>直接、デ...
ratio 1.5倍は、logFCで何?
bioinfomatics では、ratio や logFC を変動の閾値としてよく使います。ratio 2倍・4倍なら、対数表現も1・2と簡単にわかりますが、1.5倍などを閾値とした場合は、対数で何になるか覚えておくのは大変です。これらは...
R 知っていると便利!パッケージ読込みとヘルプ
Rのインストール済みのパッケージについて調べます。スクリプトがちゃんと動かないとき、「何がインストールされているか?」また、「何がインストールされていないか?」がヒントになるときがあります。とにかく早く問題解決したい人はこちら>>直接、デー...
R 関数 maxの位置・minの位置を求める
Rで、最大値や最小値を求めるのは簡単ですが、「最大値・最小値の位置は?」という問題を考えてみたいと思います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談最大値・最小値を求める最大値・最小値を求めるのは簡単です。最大値を求める...
R 使い方 データフレーム 累積和を求める
データフレームやmatrixで累積和を求める機会ありませんか?「前の行の値」に「現在の行の値」を繰り返し足していくことで求められますが、せっかく「R」を使っているのに、for文やインデックスを使って求めるのも残念な感じがします。そんなときは...
R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
R の subset関数は、データフレームやマトリックスから条件にマッチした部分集合を取り出します。条件指定の主なパラメータは、「subset」と「select」です。「subset」では行を抽出するための条件式、「select」では列を抽...

関連記事2

R 4.0 インストール ubuntu
Rのインストール手順について。最近よくつかう「tidyverse」も一緒にインストールします。とにかく早く問題解決したい人はこちら>>直接、データ解析相談R 4.0 インストール手順事前設定$ sudo apt update -qq$ su...
R 使い方 debug(デバッグ)方法 スクリプトの書き方
スクリプトが思ったように動かない、そんなときはバグ(プログラムの間違い)があると言われます。スクリプトを書く場合、そのような間違いを書かないように注意することは当然ですが、完全に防ぐのは難しいことです。スクリプトが思うように動かない場合は、...
R 使い方 文字列処理(文字列検索・文字列置換)
統計ソフトRは、統計処理やグラフの描画でよく用いられます。しかし、色々なことに活用していると、「文字列処理ができると便利だな」と思うことがあります。統計ソフトRには、文字列処理のための便利な関数が準備されているので、代表的な関数についてまと...
R 使い方 while 繰り返し スクリプトの書き方
Rで「条件を満たす間ずっと繰り返し」を行う場合は、whileを使います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談while スクリプトの書き方while文は、条件式と一緒に書きます。条件を満たす間、一連の文やブロックをず...
R 使い方 for 繰り返し スクリプトの書き方
Rで単純な繰り返し制御を行う場合は、forを使います。とにかく早く問題解決したい人はこちら>>直接、データ解析相談for スクリプトの書き方forは繰り返し制御の基本的な構造です。集合には、ベクターやデータフレームなどを使うことができます。...
R switch 使い方 スクリプトの書き方
R の switch文は、「複数の条件」とそれに「対応した処理」をまとめて記述できるので、if文よりも簡潔にかけます。R の switchの条件は、文字列で書かれたラベルで判断します。R の switch文の「書き方」と使い方を、サンプルを...
R 使い方 if 条件分岐 スクリプトの書き方
R の if文は、フロー制御で最も単純な条件分岐です。条件に「一致したかどうか」という判断で、次に実行するコマンドを変更したりするときに使います。Rのif文の「書き方」、ANDやORを使った複数条件の指定の仕方などを、サンプルを交えてまとめ...
R 使い方 関数 スクリプトの書き方
Rの使い方として、プログラムの基本構成となる関数の作り方について。とにかく早く問題解決したい人はこちら>>直接、データ解析相談R 使い方 関数を利用したプログラムメッセージの表示や、メッセージの長さを取得する関数を作成します。関数は、「関数...
R 使い方 Hello World スクリプトの書き方
Rでプログラムを書きます。今回は、プログラムの基本「Hello World!」です。とにかく早く問題解決したい人はこちら>>直接、データ解析相談Hello World プログラムHello Worldプログラムは、プログラムの勉強を開始する...
R 使い方 行列(マトリックス) スクリプトの書き方
Rのマトリックスは、他のプログラミング言語と同様、数値や文字などの1種類のデータを2次元配列として保持するデータ構造です。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。マトリックスの使い方について。とにかく早く問題解決した...
R 使い方 リスト スクリプトの書き方
Rのリストは、他のプログラミング言語と同様、各項目にたいして名前をつけたベクトルです。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。リストの使い方について。とにかく早く問題解決したい人はこちら>>直接、データ解析相談関連記...
R 使い方 ベクトル スクリプトの書き方
Rのベクトルは、他のプログラミング言語と同様、数値や文字などの1種類のデータを順番に保持するデータ構造です。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。Rのベクトルの使い方について。とにかく早く問題解決したい人はこちら>...
R 使い方 データフレーム・ファクター スクリプトの書き方
Rのデータフレーム・ファクターは、他のプログラミング言語のデータ構造とは異なる独特な構造。でも、とてもよく使う構造で、必ず使いこなせるようになりましょう。基本的な構造を理解すれば、Rはもっと使いやすいツールになります。Rのデータフレームとフ...
R 使い方 データ構造まとめ スクリプトの書き方
Rで使うデータ構造をまとめてみます。一気に眺めることで、それぞれの特徴を理解できるかもしれません。とにかく早く問題解決したい人はこちら>>直接、データ解析相談Rのデータ構造ベクトルベクトルは、最も基本的な構造をしています。数値や文字などの1...
R 使い方 データ 読込み テキスト,csv,エクセル,データベース スクリプトの書き方
「統計ソフト R」にデータを読み込むのは簡単です。タブ区切りのデータやエクセル・DBなどからデータを取り込むことができます。とにかく早く問題解決したい人はこちら>>直接、データ解析相談Rにデータを読み込む「統計ソフト R」にデータを読み込む...
タイトルとURLをコピーしました