2015-07-28 160 views
2

我有一个数据帧与价值观:汇总数据

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ÿ每个组合,每位值的总和组合。其结果将是:

x y value 
A B 25 
A C 15 
B C 20 

我发现这个question这或多或少是同样的问题,因为我有。但解决方案不适用于我的情况。这是因为xy中的值是字符串,而min()max()将不起作用。

任何想法如何做到这一点?

+1

提供的数据集和可重复的代码各不相同 –

回答

3

一种选择是sort行的前两列和替换它,使用aggregate由团“X”和“Y”得到“价值”的sum

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 
+2

写的完全相同,但无法获得所需的输出。显然OP显示并给出了不同的数据集。这看起来像一个愚蠢的人虽然 –

+0

@DavidArenburg我有同样的问题,但后来我复制了显示的数据,并得到了正确的答案。可能是他有一个错字。当然,它看起来像一个笨蛋。 – akrun

+1

好吧,再次搜索你的答案,得到一个愚蠢的 –