Ich habe die folgenden Daten:
yvar <- c(1:150)
replication <- c( rep(c(rep(1, 10), rep(2,10), rep(3,10)),5))
genotypes <- c(rep(paste("G", 1:10, sep= ""), 15))
environments <- c(rep(paste("E",5:1, sep = ""), each = 30))
mydf1 <- data.frame (yvar, replication, genotypes, environments)
mydf1$replication <- as.factor(mydf1$replication)
Ich möchte Daten zusammenfassen:
mydf = data.frame(aggregate (yvar ~ genotypes + environments, data = mydf1, mean))
Erstellen Sie nun eine Matrix, hoffentlich numerisch, matm ist nicht !
matm = as.matrix(aggregate(yvar ~ genotypes, mydf, 'c'))
colnames(matm) <- c("genotypes", levels(mydf$environments))
genotypes E1 E2 E3 E4 E5
[1,] "G1" "131" "101" " 71" " 41" " 11"
[2,] "G10" "140" "110" " 80" " 50" " 20"
[3,] "G2" "132" "102" " 72" " 42" " 12"
[4,] "G3" "133" "103" " 73" " 43" " 13"
[5,] "G4" "134" "104" " 74" " 44" " 14"
[6,] "G5" "135" "105" " 75" " 45" " 15"
[7,] "G6" "136" "106" " 76" " 46" " 16"
[8,] "G7" "137" "107" " 77" " 47" " 17"
[9,] "G8" "138" "108" " 78" " 48" " 18"
[10,] "G9" "139" "109" " 79" " 49" " 19"
Ich habe in data.frame konvertiert, dann
matd <- data.frame(matm)
genotypes E1 E2 E3 E4 E5
1 G1 31.70000 26.76667 23.60000 30.73333 43.13333
2 G10 32.40000 17.86667 28.83333 32.43333 30.23333
3 G2 29.50000 24.60000 24.16667 33.43333 38.66667
4 G3 27.00000 28.83333 33.63333 43.83333 29.60000
5 G4 29.53333 29.90000 26.60000 26.13333 40.33333
6 G5 27.40000 32.43333 27.96667 40.43333 41.46667
7 G6 36.76667 32.26667 28.26667 38.73333 33.43333
8 G7 29.63333 27.00000 26.96667 34.90000 40.70000
9 G8 24.50000 23.26667 22.50000 27.60000 32.26667
10 G9 31.60000 24.96667 24.46667 27.56667 36.26667
Ich möchte die Genotypen-Spalte loswerden und sie dann in eine Matrix umwandeln
matx = data.frame(matd[,-1])
matdm <- as.matrix(matx)
matdm
E1 E2 E3 E4 E5
[1,] "31.70000" "26.76667" "23.60000" "30.73333" "43.13333"
[2,] "32.40000" "17.86667" "28.83333" "32.43333" "30.23333"
[3,] "29.50000" "24.60000" "24.16667" "33.43333" "38.66667"
[4,] "27.00000" "28.83333" "33.63333" "43.83333" "29.60000"
[5,] "29.53333" "29.90000" "26.60000" "26.13333" "40.33333"
[6,] "27.40000" "32.43333" "27.96667" "40.43333" "41.46667"
[7,] "36.76667" "32.26667" "28.26667" "38.73333" "33.43333"
[8,] "29.63333" "27.00000" "26.96667" "34.90000" "40.70000"
[9,] "24.50000" "23.26667" "22.50000" "27.60000" "32.26667"
[10,] "31.60000" "24.96667" "24.46667" "27.56667" "36.26667"
Ich habe zwei Fragen:
(1) Gibt es eine einheitliche Methode, eine Matrix numerisch zu machen/zuzuweisen?
(2) Ich kann sehen, dass die Spaltennamen der Genotypen alphabetisch sortiert sind. Meine Datei hat eine andere Reihenfolge in der Spalte. Ich habe kein Problem mit dieser Reihenfolge, wenn sie konsistent ist, aber ich habe Angst vor dem folgenden Teil:
colnames(matm) <- c("genotypes", levels(mydf$environments))
Wenn es eine unterschiedliche Reihenfolge der Aggregatfunktion gibt und levels(mydf$environments),
Sortieren sie beide alphabettisch oder nach Datei.
Ich weiß Ihren Vorschlag zu schätzen.