2013-11-09 44 views
0

我想按兩列對框架進行排序,其中一個是數字列,另一個是因子列。R:按兩個因子排序框架

例子:

Values Size  Length 
1  "Small"  10 
2  "Big"  6 
3  "Small"  30 
4  "Medium"  22 
5  "Very Small" 17 
6  "Small"  16 

我知道如何通過兩列奧德:

myFrame <- myFrame[order(myFrame$Size,myFrame$Length)] 

不過,我想從"Very Small"列大小來"Small""Medium"排序,"Big"而不是僅僅按字母順序。

結果應該是這樣的:

Values Size   Length 
5  "Very Small" 17 
1  "Small"  10 
3  "Small"  30 
6  "Small"  16 
4  "Medium"  22 
2  "Big"   6 

我怎樣才能根據因素列進行排序的數據集?

+0

嗨!歡迎來到Stackoverflow。我不是那個反對這個問題的人,但我想給出一些理由,爲什麼這個問題被低估了。您提供的數據很難直接讀入R,並且您在提問之前沒有顯示您嘗試過的內容。意見是分開你需要展示的多少工作,但至於第一個原因,請看這個_FAQ_,以便在以後的問題中提供更好的數據:http://stackoverflow.com/questions/5963269/how-to-make-一個偉大的可重現的例子我個人認爲這是一個很好的問題,不斷問! :) –

回答

1

您可以將Size列轉換爲ordered factor list

> d <- read.table(header=T, text=' Values Size  Length 
+  1  "Small"  10 
+  2  "Big"  6 
+  3  "Small"  30 
+  4  "Medium"  22 
+  5  "Very Small" 17 
+  6  "Small"  16') 

> d$Size <- factor(d$Size, levels=c("Very Small", "Small", "Medium", "Big")) 
> d[order(d$Size), ] 
    Values  Size Length 
5  5 Very Small  17 
1  1  Small  10 
3  3  Small  30 
6  6  Small  16 
4  4  Medium  22 
2  2  Big  6