r两个嵌套列中的订单因子水平

问题描述:

我有两列嵌套级别。通过嵌套我的意思是,第2列中的因素取决于第1列的值。我想按字母顺序排列第1列中的因子水平。我想在塔2中的因子水平柱的字母顺序之后按字母顺序排列1.r两个嵌套列中的订单因子水平

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))), ] 

我试图如上所述订购因子水平,但第二列中的第一后不排序;它只是按字母顺序排列。我知道我可以手动输入我想要的级别顺序,但是我追求的是不需要的顺序。

谢谢。

+0

他们已经因素。所以你应该按照它们的值来排序。命令调用应该是'order(V1,V2)'>你看到的效果来自'levels(fac)'通常比'fac'本身短得多。 – 2015-02-24 17:18:53

+0

'data Metrics 2015-02-24 17:20:21

+0

我应该说我希望在使用ggplot2进行图形绘制时重新使用因子级别。到目前为止,当我绘制新的有序数据帧时,这些函数都不会被保留 – 2015-02-24 20:19:52

像下面这样?

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 
+0

我认为您的意思是库(plyr) – 2015-02-24 20:15:52

+0

请注意,此函数不会保留行名称。 – 2015-02-24 20:18:41

data<-data[order(data$V1,data$V2), ] #should工作

> 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 
+0

您能否请[编辑]解释为什么/如何代码回答这个问题?不提供代码的答案是不鼓励的,因为它们不像代码解释那样容易学习。没有解释,需要花费更多的时间和精力去理解正在做什么,对代码所做的更改,或者代码是否有用。对于试图从答案中学习的人以及评估答案以查看答案是否有效或值得投票的人来说,这种解释非常重要。 – Makyen 2015-02-24 20:02:02