我有一个包含两列的数据框。第一列包含“第一”、“第二”、“第三”等类别,第二列的数字代表我看到“类别”中特定组的次数。
例如:
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(x$Frequency, by=list(Category=x$Category), FUN=sum)
Category x
1 First 30
2 Second 5
3 Third 34
<小时/>
在上面的示例中,可以在列表
中指定多个维度。可以通过 cbind
合并同一数据类型的多个聚合指标:
aggregate(cbind(x$Frequency, x$Metric2, x$Metric3) ...
<小时/>
(嵌入@thelatemail评论),aggregate
也有公式接口(interface)
aggregate(Frequency ~ Category, x, sum)
或者,如果您想聚合多列,您可以使用 .
表示法(也适用于一列)
aggregate(. ~ Category, x, sum)
<小时/>
或点击
:
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))
关于r - 如何按组对变量求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1660124/