次のタイプ(ただし、変数と ind の数が非常に多い)データがあります。
mydf <- data.frame (Inv = 1:6, varA = c(1,1,1, 0,1,1),
varB = c(1,0,1, 0, 1,1), varC = c(1,0,0, 0,1,1), varD = c(1,1,1, 0,1,1),
varE = c(1,0,1, 0, 1,1), varF = c(1,1,1, 0, 1,1))
mydf
Inv varA varB varC varD varE varF
1 1 1 1 1 1 1 1
2 2 1 0 0 1 0 1
3 3 1 1 0 1 1 1
4 4 0 0 0 0 0 0
5 5 1 1 1 1 1 1
6 6 1 1 1 1 1 1
すべての 1 対 1 の比較 (変数と個人/被験者の両方) を実行し、それらが重複している場合は 1 つだけを保持し、重複した個人/変数の名前をログとして別のファイルに保存したい:
上記のデータの例:
変数の中で:
varA is exactly same as varD and varF - so I will just keep varA only in new data
mydf$varA == mydf$varE
[1] TRUE TRUE TRUE TRUE TRUE TRUE
varB and varE has exactly same data - so I will just keep varB
varC is unique
Inv(つまり、件名)の中で:
1, 5 and 6 are same -> so just keep 1
したがって、結果の出力ファイルは
mydf <- data.frame (Inv = 1:4, varA = c(1,1,1, 0),
varB = c(1,0,1, 0), varC = c(1,0,0, 0))
Inv varA varB varC
1 1 1 1 1
2 2 1 0 0
3 3 1 1 0
4 4 0 0 0
おそらく相関行列によって重複を見つけることができます:
cor(mydf[,-1])
varA varB varC varD varE varF
varA 1.0000000 0.6324555 0.4472136 1.0000000 0.6324555 1.0000000
varB 0.6324555 1.0000000 0.7071068 0.6324555 1.0000000 0.6324555
varC 0.4472136 0.7071068 1.0000000 0.4472136 0.7071068 0.4472136
varD 1.0000000 0.6324555 0.4472136 1.0000000 0.6324555 1.0000000
varE 0.6324555 1.0000000 0.7071068 0.6324555 1.0000000 0.6324555
varF 1.0000000 0.6324555 0.4472136 1.0000000 0.6324555 1.0000000
このプロセスを自動化できますか?