2013-08-06 64 views
-2

我想是的輸出應包含每個企業只有第二高的薪水進入.... 例如:如何找到業務中的R分組的第二最高的薪水

customer_id name   sales firstname lastname income business 
6   Priyank Dwivedi  2 Priyank Dwivedi 650000  PES 
4    Monika Maurya  3 Monika Maurya 200000  ITS 
1    Rahul Ranjan  3  Rahul Ranjan 1000000 PES 
7    Ambreen Khan  1 Ambreen  Khan 800000  PES 
3      P Paul  3   P  Paul 500000  ITS 
5    Sunny Tiwari  2  Sunny Tiwari 900000  Analytics 
2    Mayank Agarwal  3 Mayank Agarwal 300000  PES 
8    Shashank Rawat  1 Shashank Rawat 100000  Analytics 

我想要輸出爲:

customer_id name   sales firstname lastname income business 
4    Monika Maurya  3 Monika Maurya 200000  ITS 
8    Shashank Rawat  1 Shashank Rawat 100000  Analytics 
7    Ambreen Khan  1 Ambreen  Khan 800000  PES 

這是來自每個業務的第二高薪水。

+1

你可以提供一個重複的例子,你的數據幀。 'dput(df)'幫助你獲得輸出,所以你可以在這裏發佈它。 W.r.t.你的問題我建議看看類似:sort(x,partial = 1)[1],也許將它與'reshape2'包中的'ddply'結合起來。 –

+0

結合@MattBannert所說的,你試過了什麼? –

回答

2

...一個解決方案可能是:

res <- t(sapply(unique(data[, "business"]), 
       function(x, data){ 
        # this are the subsets 
        d <- data[x==data[, "business"], ] 
        # order it and take second 
        d[order(d[, "income"], decreasing=TRUE)[2], ] 
       }, data=data)) 
res 

data作爲數據

+0

你能解釋你的答案嗎? –

+0

當然,唯一的(數據[,「商業」])採取每個獨特的業務,每個元素比變成x,例如。第一個x =「PES」。索引像'data [x == data [,「business」],]'給你一個其他矩陣,只有上面的條件爲TRUE的元素,例如。所有業務=「PES」。這應該是你需要的子集。在這個子集中,你根據收入'd [order(d [,「income」],decrease = TRUE)[2]]並且比第二高的順序進行排序,因此[2] – holzben

+0

您的答案的問題是,在名稱列而不是顯示正確的名稱是顯示因子,1 –

相關問題