被験者ごとに報酬列の相対ランクをもとに新たに列を作りたいのですが、異なる報酬でギャンブルが重複すると、ランクは最高ランクに追従してしまいます。
これは私のデータで、新しい列は次のようになります。
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, )))
しかし、それは私が本当に望んでいるものではありません。上記の例からわかるように、ギャンブルが繰り返される場合、ランクは最高ランクに従います。たとえば、サブジェクト番号 1 の場合、ギャンブル 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)