我有一个由两个因子列组成的数据帧。 我想按一列升序和另一列降序排序。 更具体地说,我想找到与SQL相同的R代码 “按1 asc排序,2 desc”
答案 0 :(得分: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))
答案 1 :(得分: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
或者,您可以按递增顺序对两列进行排序,并使用函数b
反转列rev
:
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