我有一个包含两列的数据框。第一列包含“第一”、“第二”、“第三”等类别,第二列的数字表示我从“类别”中看到特定组的次数。
例如:
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 中做到这一点?
使用aggregate:
aggregate
aggregate(x$Frequency, by=list(Category=x$Category), FUN=sum) Category x 1 First 30 2 Second 5 3 Third 34
在上面的示例中,可以在list. 可以通过以下方式合并相同数据类型的多个聚合指标cbind:
list
cbind
aggregate(cbind(x$Frequency, x$Metric2, x$Metric3) ...
(嵌入@thelatemail 评论),aggregate也有公式界面
aggregate(Frequency ~ Category, x, sum)
或者,如果您想聚合多列,您可以使用.符号(也适用于一列)
.
aggregate(. ~ Category, x, sum)
或tapply:
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))