我有如下所示的用例。基本上我有一个三列数据框。我想分两列(c1,c2)
和总结第三个c3
。然后,我只想挑选顶部1 c1
最多c3
(在所有c2
之间),即排序将是不必要的,因为我只对最大值感兴趣。如何获得每列有多列的顶层元素?
library(plyr)
df <- data.frame(c1=c('a','a','a','b','b','c'),c2=c('x','y','y','x','y','x'),c3=c(1,2,3,4,5,6))
df
c1 c2 c3
1 a x 1
2 a y 2
3 a y 3
4 b x 4
5 b y 5
6 c x 6
sel <- plyr::ddply(df, c('c1','c2'), plyr::summarize,c3=sum(c3))
sel[with(sel, order(c1,-c3)),]
c1 c2 c3
2 a y 5 <<< this one highest c3 for (c1,c2) combination
1 a x 1
4 b y 5 <<< this one highest c3 for (c1,c2) combination
3 b x 4
5 c x 6 <<< this one highest c3 for (c1,c2) combination
我可以在循环中做到这一点,但我想知道如何以矢量方式或使用高级功能。
另一种选择由C1 + C2组总结C3之后,你只有每C1的第1个一行+ C2。 –
事实上,你是对的。我编辑了这个问题。我对'c1'感兴趣,在'c2'上最大'c3' –