我有一个数据框,由两个因子列组成 . 我想按一列升序和另一列降序排序 . 更具体地说,我想找到等效的R代码到SQL“order by 1 asc,2 desc”
2 回答
0
你也可以使用 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
您可以使用 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))
2 回答
你也可以使用
order
函数和method = "radix"
,它允许你为参数decreasing
传递一个向量:或者,您可以按递增顺序对两列进行排序,并使用函数
rev
反向列b
:您可以使用
dplyr::arrange
轻松地按变量排列行例: