Ich habe einen Datenrahmen für Sortenprüfungen, der das Vorhandensein oder Fehlen von Sorten an einem bestimmten Ort und in einem bestimmten Jahr anzeigt. Das folgende Beispiel ist eine Teilmenge der Daten.In R, wie erstelle ich reziproke Tabellen, die allgemeine Variablen zeigen?
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))
Ich möchte den Datenrahmen zusammenzufassen eine gegenseitige Tabelle zu erzeugen, die zeigt, wie viele Sorten zwischen den Kombinationen von Orten und Jahren üblich waren. Die zusammengefassten Daten würden wie folgt aussehen. Es wäre auch nützlich, die Anzahl der Sorten, die nicht identisch sind, und den Prozentsatz der gemeinsamen Sorten zu zeigen.
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))
Alle Vorschläge würden sehr geschätzt werden!
Update: Ich habe eine Version des Skripts, freundlicherweise von lmo zur Verfügung gestellt, auf einen tatsächlichen Datensatz angewendet.
sitePairs <- t(combn(1:15, 2, FUN=function(i) names(example2[,i])))
die gleichen Sorten zu zählen:
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")
Um Namen der Website-Jahres-Paare zu erhalten
varietyCount <- combn(1:15, 2, FUN=function(i) sum((rowSums(example2[,i])==2)))
Dies gibt alle Nullen, wenn es in der Tat mehr als 80% Matching sind Werte in den meisten Fällen. Klar verstehe ich falsch was das Skript macht ???
Lassen Sie uns Ihre Versuche sehen. –
Entschuldigung, ich konnte das Skript nicht speichern. –