グループごとに変数を合計する方法 質問する

グループごとに変数を合計する方法 質問する

2 つの列を持つデータ フレームがあります。最初の列には、「第 1」、「第 2」、「第 3」などのカテゴリが含まれ、2 番目の列には、「カテゴリ」の特定のグループが表示された回数を表す数字が含まれます。

例えば:

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

データをカテゴリ別に並べ替え、すべての頻度を合計します。

Category     Frequency
First        30
Second       5
Third        34

これを R でどう実行すればいいでしょうか?

ベストアンサー1

使用方法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))

おすすめ記事