長いフォームデータセット内のどの試行が繰り返されているのかを、参加者ごとに特定のブロック内でのみ特定しようとしています。データのサブセット内で重複する項目を特定する方法
sub block trial item
1 1 1 A
1 1 2 B
1 2 1 A
1 2 2 B
1 3 1 B
1 3 2 C
2 1 1 A
2 1 2 B
2 2 1 A
2 2 2 B
2 3 1 B
2 3 2 C
私が作成したいことは、各参加者のために示して新しい列、アイテムを繰り返していると、新たなトライアルコードを使用して別の新しい列ですが、アイテムのみの場合:私のデータは、このようなものを構成されていますだから、それは次のようになり、ブロック2と3で繰り返されています。
sub block trial item dup newtrial
1 1 1 A FALSE 1
1 1 2 B FALSE 2
1 2 1 A FALSE 1
1 2 2 B FALSE 2
1 3 1 C FALSE 1
1 3 2 B TRUE 102
2 1 1 A FALSE 1
2 1 2 B FALSE 2
2 2 1 A FALSE 1
2 2 2 B FALSE 2
2 3 1 C FALSE 1
2 3 2 B TRUE 102
私は、全体のデータセット間で重複を特定し、次のコードを使用して、各試行番号に100を追加することができました:
data$dup<-duplicated(data$item)
data$newtrial<-NA
data<-transform(data,
item=make.unique(as.character(item)),
newtrial=ifelse(duplicated(item),trial+100, trial))
私が把握できなかったことは、個々のサブジェクトに機能を制限する方法と、サブジェクト番号ごとに特定のブロックのみを抑制する方法です。
ありがとうございます!
あなたの希望する出力があなたの入力と一致していないようです。 'dup = TRUE'とラベル付けされたものはなぜ' sub'と 'block'の中で重複していますか? – aichao