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