2017-04-13 72 views

回答

-1

你也可以使用order功能與method = "radix",它允許您傳遞參數的向量decreasing

## Generate sample data: 
set.seed(123) 
dat <- data.frame(a = letters[sample(1:5, 20, replace = TRUE)], 
    b = rep(c("orange", "apple", "pear", "banana"), 5)) 
## Sort by increasing a and decreasing b: 
dat2 <- dat[order(dat$a, dat$b, decreasing = c(FALSE, TRUE), method = "radix"),] 

head(dat2) 
    a  b 
15 a pear 
6 a apple 
18 a apple 
19 b pear 
1 b orange 
17 b orange 

或者,也可以在爲了增加兩列進行排序,只是使用功能rev反向柱b

dat3 <- dat[order(dat$a, rev(dat$b)),] 

head(dat3) 
    a  b 
15 a pear 
6 a apple 
18 a apple 
19 b pear 
1 b orange 
17 b orange 
+0

我剛剛發現這種方法不工作。只是你的樣品列b不是有序減少的。 – raccoonjin

+0

排序優先列a。對於a的重複值,列b按降序排列。您通常不能對數據框進行排序,以便兩列按照指定的順序排列。 – ikop

0

您可以通過變量輕鬆地與dplyr::arrange

例安排行:

set.seed(123) 
dat <- data.frame(a= letters[sample(1:26, 20)], 
     b = rep(c("orange", "apple", "pear", "banana"), 5)) 
dat %>% arrange(a, desc(b)) 
+0

非常感謝,但是,有沒有使用基礎包的另一種方式? – raccoonjin

+0

檢查這個,而不是... http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns –