使用dplyr重新排序数据帧

时间:2017-03-19 19:06:59

标签: r dataframe dplyr

这是我当前自定义数据帧的代码:

mtcars %>%
mutate(cyl = factor(cyl, levels = c(8, 6, 4))) %>%
arrange(cyl) %>%
dplyr::select(cyl)

    cyl
1    8
2    8
3    8
4    8
5    8
6    8
7    8
8    8
9    8
10   8
11   8
12   8
13   8
14   8
15   6
16   6
17   6
18   6
19   6
20   6
21   6
22   4
23   4
24   4
25   4
26   4
27   4
28   4
29   4
30   4
31   4
32   4

然而,这段代码对于看似相当简单的任务感到困惑。我希望order_by可以做到这一点,但是这段代码无法按预期工作:

mtcars %>%
mutate(cyl = order_by(cyl, c(8, 6, 4))) %>%
dplyr::select(cyl)

   cyl
1    8
2   NA
3   NA
4   NA
5   NA
6   NA
7   NA
8   NA
9   NA
10  NA
11  NA
12  NA
13  NA
14  NA
15  NA
16  NA
17  NA
18  NA
19  NA
20  NA
21  NA
22  NA
23  NA
24  NA
25  NA
26  NA
27  NA
28  NA
29  NA
30  NA
31  NA
32  NA

order_by可以实现我的需求吗?

1 个答案:

答案 0 :(得分:2)

如果您想按特定变量排序,例如mpg,为什么不使用括号方法:

table = mtcars %>%
mutate(cyl = factor(cyl, levels = c(8, 6, 4))) %>%
arrange(cyl)

table[order(table$mpg),]