为什么聚合函数应用于分组列?

时间:2012-12-30 02:27:11

标签: r aggregate

有一个简单的聚合:

dat = read.table(textConnection(
  'ID value
  1 4
  1 7
  2 8
  2 3
  2 3'), header = TRUE)

aggregate(dat,by=list("type"=dat$ID),sum)

我得到结果输出:

       type ID value
    1    1  2    11
    2    2  6    14

我想知道:
1.在第一行,ID为2的原因是什么? 2.在第二行,为什么ID为6?

1 个答案:

答案 0 :(得分:2)

您请求按dat$ID汇总的每列的总和。使用此界面,将包括所有列。 dat$ID只是一个向量,因此不会从聚合结果中删除ID列。函数sum也适用于每个组中的ID

对于第一行,您计算的是with(dat, sum(ID[dat$ID==1]))或1 + 1 对于第二行,您计算的是with(dat, sum(ID[dat$ID==2]))或2 + 2 + 2 (我故意在每个索引中指定dat$ID,而不是ID,因为这是您的aggregate调用正在进行的操作。)

使用aggregate的公式界面更清晰,并提供您想要的内容。使用此界面,aggregate会显示value列的总和,以及每个聚合组中显示的ID

> aggregate(value ~ ID, data=dat, sum)
  ID value
1  1    11
2  2    14