与行和列中的维度聚合/求和

时间:2014-10-01 14:22:46

标签: r sum aggregate

我知道标准聚合函数,示例代码

aggregate(hp~cyl/vs, data=mtcars, FUN="sum", na.rm=TRUE)

返回:

  cyl vs   hp
1   4  0   91
2   6  0  395
3   8  0 2929
4   4  1  818
5   6  1  461

但是我想把" vs"在列中,像这样:

      vs   0    1
  cyl     hp   hp
1   4     91   818
2   6    395   461
3   8   2929

如何在R?

中完成

3 个答案:

答案 0 :(得分:1)

以下是data.table答案:

mt = as.data.table(mtcars)
dcast.data.table(mt, cyl ~ vs, value.var="hp", fun.agg = sum)

#    cyl    0   1
# 1:   4   91 818
# 2:   6  395 461
# 3:   8 2929   0

答案 1 :(得分:1)

尝试xtabs

xtabs(hp~cyl+vs, res)
  #      vs
#cyl    0    1
#  4   91  818
#  6  395  461
#  8 2929    0


res <- aggregate(hp~cyl/vs, data=mtcars, FUN=sum, na.rm=TRUE)

答案 2 :(得分:1)

您可以直接在xtabs()数据上使用mtcars,而无需使用aggregate()作为中间步骤:

xtabs(hp ~ cyl + vs, data = mtcars)