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

Aggregate two row in R, by their sum

假设我有这样一个矩阵:

    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 添加到 a 的 f。

所以我得到的将是:

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

我该怎么做?

谢谢。

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

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