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))