使用dplyr以自定义顺序排列行 [英] Arranging rows in custom order using dplyr
本文介绍了使用dplyr以自定义顺序排列行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
通过 dplyr
中的 arrange
函数,我们可以按升序或降序排列行。想知道如何以自定义顺序排列行。请参阅MWE。
With arrange
function in dplyr
, we can arrange row in ascending or descending order. Wonder how to arrange rows in custom order. Please see MWE.
Reg <- rep(LETTERS[1:3], each = 2)
Res <- rep(c("Urban", "Rural"), times = 3)
set.seed(12345)
Pop <- rpois(n = 6, lambda = 500000)
df <- data.frame(Reg, Res, Pop)
df
Reg Res Pop
1 A Urban 500414
2 A Rural 500501
3 B Urban 499922
4 B Rural 500016
5 C Urban 501638
6 C Rural 499274
df %>%
arrange()
所需输出
Reg Res Pop
5 C Urban 501638
6 C Rural 499274
1 A Urban 500414
2 A Rural 500501
3 B Urban 499922
4 B Rural 500016
推荐答案
我们可以使用 factor
以自定义方式更改订单
We can use factor
to change the order
in a custom way
df %>%
arrange(factor(Reg, levels = LETTERS[c(3, 1, 2)]), desc(Res), desc(Pop))
# Reg Res Pop
#1 C Urban 501638
#2 C Rural 499274
#3 A Urban 500414
#4 A Rural 500501
#5 B Urban 499922
#6 B Rural 500016
或匹配
获取索引并对其进行排列
Or with match
to get the index and arrange
on it
df %>%
arrange(match(Reg, c("C", "A", "B")), desc(Res), desc(Pop))
如果我们有多个列以降序排列
df %>%
arrange_at(2:3, desc) %>%
arrange(match(Reg, c("C", "A", "B")))
这篇关于使用dplyr以自定义顺序排列行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文