我有一个数据框:
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
中找到保留数据帧顺序的参数。
答案 0 :(得分:0)
因子将按其级别顺序排序,默认情况下按字母顺序排序。您可以使用levels
的{{1}}参数指定其他顺序。 factor
将按其出现的顺序返回唯一值,我们可以在此处使用它:
unique