根据相对排名创建新列

时间:2013-09-09 07:07:16

标签: r rank

我想根据每个主题的奖励列的相对排名创建一个新列,但如果赌博与不同的奖励重复,则排名将遵循最高排名。

这是我的数据,新列应该是这样的。

     subj gamble reward newcolumn
 1     1      1    1.5       3.0
 2     1      2    2.0       1.0
 3     1      1    0.0       3.0
 4     1      3    1.0       4.5
 5     1      1    0.0       3.0
 6     1      4    1.0       4.5
 7     2      2    5.0       1.0
 8     2      1    0.5       2.5
 9     2      4    0.0       4.0
 10    2      1    0.0       1.5

到目前为止,我收到了这段代码,

 newdata<-transform(newdata, 
      reward.rank = ave(reward, subj, 
                      FUN = function(x) rank(-x, )))

但这不是我想要的。 从上面的例子中可以看出,如果重复赌博,并且我希望排名遵循最高排名。例如,fr主题第一,赌博1有奖励1.5和0,排名0将跟随更高的排名,即3。

可以在R中做到吗? 非常感谢您提前

这是可重复的数据:

subj<-c(1,1,1,1,1,1,2,2,2,2)
gamble<-c(1,2,1,3,1,4,2,1,4,1)
reward<-c(1.5,2,0,1,0,1,5,0.5,0,0)
new<-data.frame(subj, gamble, reward) 

0 个答案:

没有答案