我有如下所示的用例。基本上我有一個三列數據框。我想分兩列(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' –