arrange
のdplyr
関数を使用すると、行を昇順または降順に並べることができます。行をカスタムオーダーで配置する方法を検討してください。 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
を使用して、カスタム方法でorder
を変更できます
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
または、match
を使用してインデックスを取得し、arrange
を使用します
df %>%
arrange(match(Reg, c("C", "A", "B")), desc(Res), desc(Pop))
arrange
への降順で複数の列がある場合
df %>%
arrange_at(2:3, desc) %>%
arrange(match(Reg, c("C", "A", "B")))
data.tableを使用
df1[order(factor(Reg,levels = LETTERS[c(3,1,2)]))]
ここでdf1はdata.tableです