【发布时间】:2019-03-13 14:39:01
【问题描述】:
以下按预期工作:
m <- matrix (c(1, 2, 3,
1, 2, 4,
2, 1, 4,
2, 1, 4,
2, 3, 4,
2, 3, 6,
3, 2, 3,
3, 2, 2), byrow=TRUE, ncol=3)
df <- data.frame(m)
aggdf <- aggregate(df$X3, list(df$X1, df$X2), FUN=sum)
colnames(aggdf) <- c("A", "B", "value")
结果:
A B value
1 2 1 8
2 1 2 7
3 3 2 5
4 2 3 10
但我想将第 1/2 行和第 3/4 行视为平等,而不关心观察 A 为 1 且 B 为 2,反之亦然。
我也不关心聚合如何在最终的 data.frame 中对 A/B 进行排序,因此以下两个结果都可以:
A B value
1 2 1 15
2 3 2 15
A B value
1 1 2 15
2 2 3 15
如何实现?
【问题讨论】:
-
尝试
df[1:2] <- t(apply(df[1:2], 1, sort)),然后进行聚合