私は、所与の場所および年の品種の有無を示す作物品種試験のためのデータフレームを持っています。次の例は、データのサブセットです。Rでは、共通変数を示す相反テーブルを作成するにはどうすればよいですか?
example<-structure(list(Variety = 1:88, Site1_Yr1 = c(0L, 0L, 0L, 0L,
0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 1L),
Site2_Yr1 = c(0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L
),
Site3_Yr1 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
Site1_Yr2 = c(0L,
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 1L),
Site2_Yr2 = c(0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L,
0L, 0L, 1L),
Site3_Yr2 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L,
0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L)),
.Names = c("Variety", "Site1_Yr1", "Site2_Yr1", "Site3_Yr1", "Site1_Yr2", "Site2_Yr2", "Site3_Yr2"), class = "data.frame", row.names = c(NA, -88L))
データフレームを要約して、場所と年の組み合わせの間に共通する品種の数を示す相反テーブルを作成します。集計されたデータは、次のようになります。同じではない品種の数と共通品種の割合を示すことも有用です。
result <- structure(list(X = structure(c(1L, 3L, 5L, 2L, 4L, 6L),
.Label = c("Site1_Yr1",
"Site1_Yr2", "Site2_Yr1", "Site2_Yr2", "Site3_Yr1", "Site3_Yr2"),
class = "factor"), Site1_Yr1 = c(5L, 4L, 0L, 2L, 1L, 1L),
Site2_Yr1 = c(4L, 11L, 4L, 5L, 1L, 1L),
Site3_Yr1 = c(0L, 4L, 9L, 4L, 0L, 1L),
Site1_Yr2 = c(2L, 5L, 4L, 10L, 1L, 1L),
Site2_Yr2 = c(1L, 1L, 0L, 1L, 6L, 1L),
Site3_Yr2 = c(1L, 1L, 1L, 1L, 1L, 13L)),
.Names = c("X", "Site1_Yr1", "Site2_Yr1", "Site3_Yr1", "Site1_Yr2", "Site2_Yr2", "Site3_Yr2"),
class = "data.frame", row.names = c(NA, -6L))
ご意見をいただければ幸いです!
更新:私は実際にデータセットにlmoから提供されたバージョンのスクリプトを適用しました。
example2<- structure(list(Davis.1 = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 0L, 0L, 0L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 3L, 0L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), Davis.2 = c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L,
0L, 3L, 3L, 3L, 0L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), Davis.3 = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 3L, 3L, 3L, 3L, 0L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), DREC.1 = c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 0L, 3L, 0L, 3L,
3L, 3L, 3L, 3L, 0L, 0L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), DREC.2 = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L, 0L, 3L, 3L, 3L, 0L, 3L, 0L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), DREC.3 = c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L, 0L,
0L, 3L, 3L, 3L, 3L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), KARE1.1 = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 0L, 0L, 0L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 3L,
0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), KARE1.2 = c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 3L, 0L, 3L, 0L,
3L, 3L, 3L, 3L, 0L, 0L, 0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), KARE1.3 = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 3L, 3L, 3L, 3L, 0L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), KARE2.1 = c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 0L, 3L, 0L, 3L,
3L, 3L, 3L, 3L, 0L, 0L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), KARE2.2 = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L, 0L, 3L, 3L, 3L, 0L, 3L, 0L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), KARE2.3 = c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L, 0L,
0L, 3L, 3L, 3L, 3L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), WSREC.1 = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 0L, 0L, 0L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 3L,
0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), WSREC.2 = c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L,
0L, 3L, 3L, 3L, 0L, 3L, 0L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), WSREC.3 = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 3L, 3L, 3L, 3L, 0L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L)), .Names = c("Davis.1",
"Davis.2", "Davis.3", "DREC.1", "DREC.2", "DREC.3", "KARE1.1",
"KARE1.2", "KARE1.3", "KARE2.1", "KARE2.2", "KARE2.3", "WSREC.1",
"WSREC.2", "WSREC.3"), row.names = c("83G19", "84G62", "85G01",
"85G03", "86G32", "87P06", "AG1201", "AG1401", "AG2101", "AG2103",
"AG3101", "DK28E", "DKS-51-01", "DKS-551-0", "DKS-551-01", "DKS-553-6",
"DKS-553-67", "DKS26-60", "DKS28-05", "DKS37-07", "DKS44-20",
"DKS51-01", "DKS53-67", "ExP28133", "EXP28133", "KS310", "KS585",
"NK5418", "NK7829", "NK8416", "R-0413", "R-06173", "R-10413",
"R-49473", "R-68653", "R-92123", "SP3425"), class = "data.frame")
サイト年のペアの名前を取得するには:同じ品種をカウントするには
sitePairs <- t(combn(1:15, 2, FUN=function(i) names(example2[,i])))
を80%のマッチングの上に実際に存在する場合に
varietyCount <- combn(1:15, 2, FUN=function(i) sum((rowSums(example2[,i])==2)))
これは、すべてゼロを返します。ほとんどの場合値。明らかに私はスクリプトが何をしているのか誤解しているここで
あなたの試行を見てみましょう。 –
申し訳ありませんが、スクリプトを保存できませんでした。 –