我想根据每个主题的奖励列的相对排名创建一个新列,但如果赌博重复了不同的奖励,那么排名将跟随最高排名。
这是我的数据,新列应该是这样的。
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)