小编典典

如何按组对变量求和

all

我有一个包含两列的数据框。第一列包含“第一”、“第二”、“第三”等类别,第二列的数字表示我从“类别”中看到特定组的次数。

例如:

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 中做到这一点?


阅读 94

收藏
2022-03-16

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

或者,如果您想聚合多列,您可以使用.符号(也适用于一列)

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))
2022-03-16