私は次のタイプのデータを持っています、つまり要因の組み合わせを意味します
P1 <- c("a", "a", "a", "a", "b", "b", "b", "c", "c", "d")
P2 <- c("a", "b", "c", "d", "b", "c", "d", "c", "d", "d")
myfactors <- data.frame(P1, P2)
P1 P2
1 a a
2 a b
3 a c
4 a d
5 b b
6 b c
7 b d
8 c c
9 c d
10 d d
実際には、因子は任意の数である可能性があります。私は、あらゆるレベルの因子に適用できる関数を作成しようとしています。データセットで利用可能なすべての組み合わせのコントラストを設定したいと思います。たとえば、このデータセットでは、ab、ac、ad、bc、bd、cdです。ここでのコントラストルール。
for example for "a-b" is if P1 = P2 = a or b the coefficient = -1,
if P1=a, P2= b or P1= b, P2 = a, the coefficient = 2,
else coefficient = 0
出力係数行列は次のようになります。
P1 P2 a-b a-c a-d b-c b-d c-d
a a -1 -1 -1 0 0 0
a b 2 0 0 0 0 0
a c 0 2 0 0 0 0
a d 0 0 2 0 0 0
b b 1 0 0 -1 -1 0
b c 0 0 0 2 0 0
b d 0 0 0 0 2 0
c c 0 1 0 0 0 -1
c d 0 0 0 -1 0 2
d d 0 0 -1 0 -1 -1
私が考えている関数は柔軟なものなので、次のデータセットに適用すると、
P1 <- c("CI", "CI", "CI", "CD", "CD", "CK", "CK")
P2 <- c("CI", "CD", "CK", "CD", "CK", "CK", "CI")
mydf2 <- data.frame(P1, P2)
mydf2
P1 P2
1 CI CI
2 CI CD
3 CI CK
4 CD CD
5 CD CK
6 CK CK
7 CK CI
このデータフレームに期待される係数行列は次のとおりです。
P1 P2 CI-CD CI-CK CD-CK CK-CI
CI CI -1 -1 0 -1
CI CD 2 0 0 0
CI CK 0 2 0 0
CD CD -1 0 -1 0
CD CK 0 0 2 0
CK CK 0 -1 -1 -1
CK CI 0 0 0 2
私はいくつかの方法を試しましたが、プログラムを成功させることができませんでした。
編集:
(1)考えられるすべての組み合わせをテストしているわけではなく、P1とP2にのみ表示される組み合わせがテストされています。
(2)この場合だけでなく、一般的なアプリケーションのソリューションを開発するつもりです。たとえば、上記のmyfactorsデータフレーム。