我有以下数据:
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)
我想总结一下数据:
mydf = data.frame(aggregate (yvar ~ genotypes + environments, data = mydf1, mean))
现在创建一个矩阵,希望是数字矩阵,matm 不是!
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"
我转换为data.frame,然后
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
我想去掉基因型列,然后将其转换为矩阵
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"
我有两个问题:
(1) 是否有一致的方法来制作/分配矩阵数字
(2) 我可以看到基因型列名称按字母顺序排序。我的文件在列中的顺序不同。如果这是一致的,我对这个顺序很好,但是我担心以下部分:
colnames(matm) <- c("genotypes", levels(mydf$environments))
如果聚合函数的阶数不同并且levels(mydf$environments),
它们都是按字母顺序排序还是按文件顺序排序。
感谢您的建议。