在R中聚合两行,用它们的总和

时间:2015-08-11 12:40:17

标签: r matrix aggregate

说我有这样的矩阵:

    x y z f
  a 2 2 3 10
  b 2 3 1 90
  c 2 2 3 10

我想要的是当x,y和z在两行中相等时我想用它们在f上的和来合并它们。这里a和c的x,y和z相同,我想将c f添加到f f中。

所以我得到的就是这个:

    x y z f
  a 2 2 3 20
  b 2 3 1 90

我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:1)

我们可以使用aggregate中的'公式'方法。这里.表示数据集中的所有其他变量。

aggregate(f~., m1, FUN=sum)

可以明确地写为

aggregate(f~x+y+z, m1, FUN=sum)

如果仅使用变量子集作为分组变量,那将非常有用。

数据

m1 <- structure(c(2L, 2L, 2L, 2L, 3L, 2L, 3L, 1L, 3L, 10L, 90L, 10L
), .Dim = 3:4, .Dimnames = list(c("a", "b", "c"), c("x", "y", 
"z", "f")))