2015-02-24 65 views
0

我有兩列嵌套級別。通過嵌套我的意思是,第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 <-data [order(data $ V1,data $ V2),]' – Metrics 2015-02-24 17:20:21

+0

我應該說我希望在使用ggplot2進行圖形繪製時重新使用因子級別。到目前爲止,當我繪製新的有序數據幀時,這些函數都不會被保留 – 2015-02-24 20:19:52

回答

0

像下面這樣?

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

0

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