Изменить порядок в столбце во фрейме данных - PullRequest
1 голос
/ 25 апреля 2020

Я хочу изменить порядок с помощью столбца "q", A и B, C и D, E и F должны поменяться местами. Я не знаю, как закодировать это, какие-либо предложения? OBS Я хочу только изменить столбец, а не другие столбцы!

    id <- rep(1:3, each=6)
q <- rep(c("A", "B", "C", "D", "E", "F"),3)
set.seed(1)
m <- sample(1:100,18)
set.seed(2)
n <- sample(1:100,18)
set.seed(3)
o <- sample(1:100,18)

df <- data.frame(id,q,m,n,o)
 df
   id q  m   n  o
1   1 A 27  19 17
2   1 B 37  70 80
3   1 C 57  57 38
4   1 D 89  17 32
5   1 E 20  91 58
6   1 F 86  90 96
7   2 A 97  13 12
8   2 B 62  78 28
9   2 C 58  44 54
10  2 D  6  51 95
11  2 E 19  50 47
12  2 F 16  22 45
13  3 A 61  67 90
14  3 B 34  16 49
15  3 C 67  35 75
16  3 D 43  73 71
17  3 E 88  83 10
18  3 F 83 100 59

Это должно выглядеть так:

id q  m   n  o
1   1 B 27  19 17
2   1 A 37  70 80
3   1 D 57  57 38
4   1 C 89  17 32
5   1 F 20  91 58
6   1 E 86  90 96
7   2 B 97  13 12
8   2 A 62  78 28
9   2 D 58  44 54
10  2 C  6  51 95
11  2 F 19  50 47
12  2 E 16  22 45
13  3 B 61  67 90
14  3 A 34  16 49
15  3 D 67  35 75
16  3 C 43  73 71
17  3 F 88  83 10
18  3 E 83 100 59
> 

Ответы [ 2 ]

3 голосов
/ 25 апреля 2020

Это, наверное, самое простое:

levels(df$q) <- c("B", "A", "D", "C", "F", "E")
df
#>    q  m  n   o
#> 1  B 68 85   5
#> 2  A 39 79  58
#> 3  D  1 70  12
#> 4  C 34  6  36
#> 5  F 87 32  99
#> 6  E 43  8  95
#> 7  B 14 17   8
#> 8  A 82 93  20
#> 9  D 59 81  74
#> 10 C 51 76  55
#> 11 F 85 41  40
#> 12 E 21 50  48
#> 13 B 54 75  94
#> 14 A 74 65  37
#> 15 D  7  3  66
#> 16 C 73 80  29
#> 17 F 79 89 100
#> 18 E 37 55  87

2 голосов
/ 25 апреля 2020

Есть много способов сделать это. Одним из способов является dplyr::recode

df$q <- dplyr::recode(df$q, 
          'A' = 'B', 'B' = 'A', 'C' = 'D', 'D' = 'C', 'E' = 'F', 'F' = 'E')

df
#   q  m  n   o
#1  B 68 85   5
#2  A 39 79  58
#3  D  1 70  12
#4  C 34  6  36
#5  F 87 32  99
#6  E 43  8  95
#7  B 14 17   8
#8  A 82 93  20
#9  D 59 81  74
#10 C 51 76  55
#11 F 85 41  40
#12 E 21 50  48
#13 B 54 75  94
#14 A 74 65  37
#15 D  7  3  66
#16 C 73 80  29
#17 F 79 89 100
#18 E 37 55  87
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...