特定の値を1つの行にコピーし、共通の条件に基づいて異なる行に戻したいとします。 ここで、各試行には2人の個人(被験者と敵)があり、被験者だけのために記録されたデータがあります。私は、被験者のデータを「逆転させて」適切な行、つまり被験者が相手だった場所に貼り付けたいと思います。共通のインデックスの行[i]から行[i + 1]への値の移動
例データセット:
df = data.frame(
section = section,
trial = c(rep(c(rep("trial1",2), rep("trial2",2)),2)),
subject = rep(subjects,2),
rank = c(rep(c(1,4,2,3),2)),
count.given = rnorm(8, m=5, sd = 3),
opponent = rep(NA,(length(section))),
opponent.rank = rep(NA,(length(section))),
count.received = rep(NA,(length(section))))
ここではDFです:
section trial subject rank count.given opponent opponent.rank count.received
1 1 trial1 a 1 11.0552711 NA NA NA
2 1 trial1 b 4 4.8118577 NA NA NA
3 1 trial2 c 2 8.9146090 NA NA NA
4 1 trial2 d 3 11.8599362 NA NA NA
5 2 trial1 a 1 0.8334179 NA NA NA
6 2 trial1 b 4 4.1636337 NA NA NA
7 2 trial2 c 2 4.6000360 NA NA NA
8 2 trial2 d 3 6.9078512 NA NA NA
は今、私の目標は、同じセクションと同じ試験の適切なデータと相手の欄に記入することです。たとえば、第1行はセクション1、試行1、およびサブジェクト "a"に対応します。相手はセクション1、試行1、そしてサブジェクト "b"です。逆もまた真です: "a"は2行目の相手です。
目標は次のようにDFを更新することです:
section trial subject rank count.given opponent opponent.rank count.received
1 1 trial1 a 1 11.0552711 b 4 4.8118577
2 1 trial1 b 4 4.8118577 a 1 11.0552711
3 1 trial1 c 2 8.9146090 d 3 11.8599362
4 1 trial1 d 3 11.8599362 c 2 8.9146090
5 2 trial2 a 1 0.8334179 b 4 4.1636337
6 2 trial2 b 4 4.1636337 a 1 0.8334179
7 2 trial2 c 2 4.6000360 d 3 6.9078512
8 2 trial2 d 3 6.9078512 c 2 4.6000360
私はこれを行うための最善の方法は、セクションと裁判でDFをソートすること、及び、その後に対応するインデックスを作成すると思います[i]と[ i + 1]となる。次に、[i]の件名データが[i + 1]の相手データに貼り付けられ、その逆も同様です。どんな助けでも大歓迎です。