r两个嵌套列中的顺序因子级别

r两个嵌套列中的顺序因子级别,r,nested,levels,R,Nested,Levels,我有两个列,它们的级别是嵌套的。通过嵌套,我的意思是第2列中的因子取决于第1列的值。我想按字母顺序排列第1列中的系数级别。我希望第2列中的因子水平按照第1列的字母顺序进行排序 data<-as.data.frame(cbind(c("A","B","D","C","A","B","D","C","A","B","C","D"), c("Alpha","Beta","Gamma","Delta","Zeta","Chi","Omega",

我有两个列,它们的级别是嵌套的。通过嵌套,我的意思是第2列中的因子取决于第1列的值。我想按字母顺序排列第1列中的系数级别。我希望第2列中的因子水平按照第1列的字母顺序进行排序

data<-as.data.frame(cbind(c("A","B","D","C","A","B","D","C","A","B","C","D"),
                      c("Alpha","Beta","Gamma","Delta","Zeta","Chi","Omega",
                                  "Delta","Alpha","Gamma","Beta","Zeta")))

data<-data[with(data, order(factor(levels(data$V1))), 
                                      factor(levels(data$V2))), ]
数据如下所示

library(dplyr)
arrange(data, V1, V2)
   V1    V2
1   A Alpha
2   A Alpha
3   A  Zeta
4   B  Beta
5   B   Chi
6   B Gamma
7   C  Beta
8   C Delta
9   C Delta
10  D Gamma
11  D Omega
12  D  Zeta

数据它们已经是因素了。因此,您应该根据它们的值进行排序。排序调用应该是
order(V1,V2)
>您看到的效果来自这样一个事实,即
levels(fac)
通常比
fac
本身短得多。
data我应该说,我希望在使用ggplot2进行绘图时使用因子级别重新排序。到目前为止,当我绘制新的有序数据框架时,这些函数都没有保留。请您解释一下为什么/如何回答这个问题?不鼓励只使用代码的答案,因为它们不像带有解释的代码那么容易学习。在没有解释的情况下,理解所做的工作、对代码所做的更改或代码是否有用需要花费相当多的时间和精力。对于试图从答案中学习的人和评估答案以确定其是否有效或是否值得投票的人来说,解释都很重要。我想您是指库(plyr)注意,此函数不会保留行名称。
> data
   V1    V2
1   A Alpha
9   A Alpha
5   A  Zeta
2   B  Beta
6   B   Chi
10  B Gamma
11  C  Beta
4   C Delta
8   C Delta
3   D Gamma
7   D Omega
12  D  Zeta