1. ホーム
  2. r

[解決済み】変数をグループ別に合計する方法

2022-03-24 12:03:32

質問

2つの列を持つデータフレームがあります。最初の列には、"First", "Second", "Third" などのカテゴリがあり、2番目の列には、"Category" から特定のグループを見た回数を表す数字が書かれています。

例えば

Category     Frequency
First        10
First        15
First        5
Second       2
Third        14
Third        20
Second       3

データをCategoryでソートして、すべてのFrequenciesを合計したいのですが。

Category     Frequency
First        30
Second       5
Third        34

Rでこれを行うにはどうしたらよいでしょうか?

どのように解決するのですか?

使用方法 aggregate :

aggregate(x$Frequency, by=list(Category=x$Category), FUN=sum)
  Category  x
1    First 30
2   Second  5
3    Third 34


上記の例では、複数のディメンジョンを list . 同じデータ型の複数の集約されたメトリクスは、以下の方法で組み込むことができます。 cbind :

aggregate(cbind(x$Frequency, x$Metric2, x$Metric3) ...


(@thelatemail のコメントを埋め込む)。 aggregate は数式インターフェースも持っています

aggregate(Frequency ~ Category, x, sum)

また、複数のカラムを集計したい場合は . という記法があります(1列でも使えます)。

aggregate(. ~ Category, x, sum)


または tapply :

tapply(x$Frequency, x$Category, FUN=sum)
 First Second  Third 
    30      5     34 


このデータを使って

x <- data.frame(Category=factor(c("First", "First", "First", "Second",
                                      "Third", "Third", "Second")), 
                    Frequency=c(10,15,5,2,14,20,3))