2013-10-30 94 views
0

記錄我有一個像下面一個數據幀,我想對他們進行排名WRT col1和col2的排名中的R

Col1 Col2 Col3 Col4 
1  1  20 a 
1  2  30 b 
2  3  45 c 
1  1  50 e 
1  2  60 d 

排序col1和col2上

Col1 Col2 Col3 Col4 
1  1  20 a 
1  1  50 e 
1  2  30 b 
1  2  60 d 
2  3  45 c 

現在我想排名記錄對應於同樣的「Col1中」和「col2的」

Col1 Col2 Col3 Col4 Rank 
1  1  20 a  1 
1  1  50 e  2 
1  2  30 b  1 
1  2  60 d  2 
2  3  45 c  1 

我已經試過了功能等級()和順序(),但他們沒有輸出什麼,我要求。 所有幫助表示讚賞。由於

+1

難道你不認爲你應該解釋的排名規則被故意的嗎? –

回答

1

隨着data.table,你仍然可以使用該功能order和使用by參數來指定要通過Col1Col2排名。

# load package 
require(data.table) 
# assuming your data.frame is called df 
dt <- data.table(df) 
# alternatively, try dt <- data.table(df, key=c('Col1', 'Col2')) 
# do you want the order of Col3 or Col4? 
dt[, Rank:=order(Col3), by=list(Col1, Col2)] 
dt 
+0

謝謝,這是我想要的 – user1946217

0

相反的「排行榜」,我猜你的意思是得到一個序列編號:

dat$Rank <- with(dat, ave(Col3, list(Col1,Col2), seq))