2010-07-23 22 views
4

是否有一個標準的方式排序一個data.frame幾列,但隨着減少或增加的變化?例如,您可能想要通過一個變量(遞減)和下一個(遞增)來排序data.frame。orderBy隨着遞減和遞增排序的變化

有什麼樣:

mydf[ order(mydf$myvariable,mydf$myvariable2,decreasing=c(FALSE,TRUE)), ] 
+0

你有沒有[R幫助'訂購'?示例部分有一些有用的代碼(使用'xtfrm'作爲字符變量)。 – Marek 2010-07-23 09:10:45

回答

3
library(plyr) 
mydf[with(mydf, order(myvariable, desc(myvariable2)), ] 

# Or, a little less typing: 
arrange(mydf, myvariable, desc(myvariable2)) 
+0

我喜歡這兩個答案,但我承認我有點偏向於plyr包;) – 2010-07-23 13:49:11

3

快速解決方法:

mydf[ order(mydf$myvariable,-mydf$myvariable2,decreasing=F), ] 

有關因素,字符串等:

mydf[ order(mydf$myvariable,-xtfrm(mydf$myvariable2),decreasing=F), ] 
+0

它不適用於字符/因子列。 – Marek 2010-07-23 09:06:09

+0

好點,擴展處理。 – mbq 2010-07-23 09:38:43

+1

'xtfrm'是你正在尋找的功能 – hadley 2010-07-23 12:04:05

0
library(Deducer) 
sort(mtcars,by = ~ cyl - mpg)