我有一个包含值的数据框:
x y value
A B 10
B A 15
A C 5
C A 10
B C 20
df <- data.frame(x = c("A", "B", "A", "C", "B"),
y = c("A", "A", "C", "A", "C"),
value = c(10, 15, 5, 10, 20))
我想将此数据汇总到 x 和 y 的每个组合,并获得每个组合的值的总和。结果将是:
x y value
A B 25
A C 15
B C 20
我发现这个question或多或少与我的问题相同。但是解决方案在我的案例中不起作用。这是因为 x 和 y 中的值是字符串,min()
和max()
不起作用。
任何想法如何做到这一点?
答案 0 :(得分:3)
一个选项是sort
前两列中的行并替换它,使用aggregate
获取sum
的值&#39;由小组&#39; x&#39;并且&#39; y&#39;。
df[1:2] <- t(apply(df[1:2], 1, sort))
aggregate(value~., df, sum)
# x y value
# 1 A B 25
# 2 A C 15
# 3 B C 20