Я хотел бы переставить переменные в фрейме данных, используя dplyr's
select
и everything()
.
Создать фрейм данных.
> library(dplyr)
> X <- tibble(a = seq(0, 10),
b = seq(10, 20),
c = seq(20, 30),
d = seq(30, 40),
e = seq(40, 50))
Я могу переместить c
в начало списка.
> X %>% select(c, everything())
# A tibble: 11 x 5
c a b d e
<int> <int> <int> <int> <int>
1 20 0 10 30 40
2 21 1 11 31 41
3 22 2 12 32 42
4 23 3 13 33 43
5 24 4 14 34 44
6 25 5 15 35 45
7 26 6 16 36 46
8 27 7 17 37 47
9 28 8 18 38 48
10 29 9 19 39 49
11 30 10 20 40 50
Но если я хочу переместить c
в конец списка, это не сработает.
> X %>% select(everything(), c)
# A tibble: 11 x 5
a b c d e
<int> <int> <int> <int> <int>
1 0 10 20 30 40
2 1 11 21 31 41
3 2 12 22 32 42
4 3 13 23 33 43
5 4 14 24 34 44
6 5 15 25 35 45
7 6 16 26 36 46
8 7 17 27 37 47
9 8 18 28 38 48
10 9 19 29 39 49
11 10 20 30 40 50
Однако следующее завершает перемещение c
в конец.
> X %>% select(-c, everything(), c)
# A tibble: 11 x 5
a b d e c
<int> <int> <int> <int> <int>
1 0 10 30 40 20
2 1 11 31 41 21
3 2 12 32 42 22
4 3 13 33 43 23
5 4 14 34 44 24
6 5 15 35 45 25
7 6 16 36 46 26
8 7 17 37 47 27
9 8 18 38 48 28
10 9 19 39 49 29
11 10 20 40 50 30
Но можем ли мы сделать оба? То есть мы можем переместить что-то вперед, что-то до конца. Например, можно ли переместить b
вперед и c
в конец?
Это не работает. c
необходимо перейти к концу.
> X %>% select(b, -c, everything(), c)
# A tibble: 11 x 5
b a c d e
<int> <int> <int> <int> <int>
1 10 0 20 30 40
2 11 1 21 31 41
3 12 2 22 32 42
4 13 3 23 33 43
5 14 4 24 34 44
6 15 5 25 35 45
7 16 6 26 36 46
8 17 7 27 37 47
9 18 8 28 38 48
10 19 9 29 39 49
11 20 10 30 40 50
Это не работает. b
не перемещается в начало.
> X %>% select(-c, b, everything(), c)
# A tibble: 11 x 5
a b d e c
<int> <int> <int> <int> <int>
1 0 10 30 40 20
2 1 11 31 41 21
3 2 12 32 42 22
4 3 13 33 43 23
5 4 14 34 44 24
6 5 15 35 45 25
7 6 16 36 46 26
8 7 17 37 47 27
9 8 18 38 48 28
10 9 19 39 49 29
11 10 20 40 50 30
Итак, мой вопрос: используя select
и everything()
, могу ли я переместить некоторые переменные в начало списка, а некоторые - в конец, а все остальное между ними?