私は、予測された手段とのペアワイズ比較のための重要度のマトリックスを生成する、私が継承したコードをいくつか持っています。モデルには複数のサイトや治療のデータが含まれていますが、サイト内の治療内の遺伝子型を比較したいだけなので、比較のサブセットのみが意味を持ちます。特定のペアごとの比較を行う方法R
ここには、現在生成されているもののダミーバージョンがあります。
effect.nam <- expand.grid(site=c("A","B","C"), treat=c("low","high"), genotype=c("A1","B2"))
labels <- paste(effect.nam[,1],effect.nam[,2],effect.nam[,3], sep=".")
mat <-matrix(sample(c(T,F),144,replace=T),12,12)
dimnames(mat) <- list(labels,labels)
T/Fは明らかにランダムです。私が望むのは、サイトと治療の比較だけを見ることです。自己比較も削除するといいでしょう。理想的には私は、フォームでのデータフレームを返したい:
Site Treat Genotype1 Genotype2 Sig
1 A low A1 2 TRUE
2 A low A1 3 TRUE
3 A low B2 3 TRUE
4 A high A1 2 TRUE
5 A high A1 3 FALSE
6 A high B2 3 FALSE
7 B low A1 2 FALSE
8 B low A1 3 TRUE
9 B low B2 3 FALSE
10 B high A1 2 TRUE
11 B high A1 3 TRUE
12 B high B2 3 TRUE
13 C low A1 2 TRUE
14 C low A1 3 TRUE
15 C low B2 3 FALSE
16 C high A1 2 TRUE
17 C high B1 3 TRUE
18 C high A2 3 TRUE
私はいくつかの偽の開始を作った、と誰もが正しい方向にいくつかの簡単なポインタを持っていた場合、それが認識されるであろう。
Chaseが下で示した非常に有用な答えでは、無意味な比較は取り除かれていますが、各有用な比較は2回(遺伝子型1対遺伝子型2およびその逆)含まれています。私は私の謝罪...彼らは本当に複製じゃないので、簡単に、これらを削除する方法
--Update--
を見ることができない、私は、チェイスのソリューションが実装されたときにそのようmat
を変更するために必要なGenotype1
とGenotype2
はfactor
で、実際の状況と同様にint
ではありません。ここでは、比較の倍増を避けるために並べ替えの列を追加して、以下のソリューションにいくつか追加しました。
これはうまくいきますが、これらの列を追加することは私にとっては厄介なようです。よりエレガントな方法がありますか?
mat.m <- melt(mat)
mat.m[,c("site1", "treat1", "genotype1")] <- colsplit(mat.m$X1, "\\.", c("site1", "treat1", "genotype1"))
mat.m[,c("site2", "treat2", "genotype2")] <- colsplit(mat.m$X2, "\\.", c("site2", "treat2", "genotype2"))
str(mat.m)
mat.m$genotype1sort <- mat.m$genotype1
mat.m$genotype2sort <- mat.m$genotype2
levels(mat.m$genotype1sort) <- c(1, 2)
levels(mat.m$genotype2sort) <- c(1, 2)
mat.m$genotype1sort <- as.numeric(levels(mat.m$genotype1sort))[mat.m$genotype1sort]
mat.m$genotype2sort <- as.numeric(levels(mat.m$genotype2sort))[mat.m$genotype2sort]
subset(mat.m, site1 == site2 & treat1 == treat2 & genotype1 != genotype2 & genotype1sort < genotype2sort,
select = c("site1", "treat1", "genotype1", "genotype2", "value"))
#-----
site1 treat1 genotype1 genotype2 value
73 A low A1 B2 TRUE
86 B low A1 B2 TRUE
99 C low A1 B2 TRUE
112 A high A1 B2 TRUE
125 B high A1 B2 FALSE
138 C high A1 B2 FALSE
パフォーマンスが問題になった場合、私は有用ではない多くの比較を実行する代わりに、必要な比較を生成し、そのリストを実際にポストダウンします。 – Chase