2

我想根据每个主题的奖励列的相对排名创建一个新列,但如果赌博重复了不同的奖励,那么排名将跟随最高排名。

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

     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主题一,gamble 1有reward 1.5和0,rank 0会跟上高的rank,也就是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) 
4

0 回答 0