【发布时间】:2019-02-13 19:33:21
【问题描述】:
我有一个数据框:
df<- data.frame(lep= c("Tarchon", "Tarchon", "Tarchon", "Tarchon", "Tarchon",
"Gonodonta","Gonodonta","Gonodonta", "Apatelodes"),
plant=c("Amphimoea","Desmotrichia", "Paches", "Neoxeniades",
"Desmotrichia","Neoxeniades","Amphimoea", "Acribia","Sychesia"),
freq=c(2,5,1,3,4,2,1,1,4))
我使用以下方法转换为矩阵:
mat1<-acast(df, plant~lep, value.var="freq", sum)
输出按字母顺序排列plant 和lep 的名称,但是我希望在矩阵中维护数据框中的顺序。
这是所需的输出:
mdat <- matrix(c(2,5,1,3,0,0,1,0,0,2,0,0,0,0,0,0,0,4), nrow = 6, ncol = 3, byrow = TRUE,
dimnames = list(c("Amphimoea","Desmotrichia", "Paches", "Neoxeniades",
"Acribia","Sychesia"),
c("Tarchon","Gonodonta", "Apatelodes")))
我并不偏爱使用acast,我刚刚发现这个函数对我拥有的数据框类型很有帮助。我无法在acast 中找到保留数据帧顺序的参数。
【问题讨论】:
标签: r dataframe matrix reshape2