For example, I have the typical dataframe:
library(tidyverse)
my_data <- as_tibble(iris)
my_data
# A tibble: 150 × 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# … with 140 more rows
I just want to reorder the dataset by the column "Species" (which has 3 values: setosa, virginica and versicolor), specifying an exact order of rows. For example: virginica, then setosa, then versicolor.
>Solution :
You can use arrange and match:
library(dplyr)
iris %>%
arrange(match(Species, c("virginica", "setosa", "versicolor")))
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 6.3 3.3 6.0 2.5 virginica
#> 2 5.8 2.7 5.1 1.9 virginica
#> 3 7.1 3.0 5.9 2.1 virginica
#> 4 6.3 2.9 5.6 1.8 virginica
#> 5 6.5 3.0 5.8 2.2 virginica
#> 6 7.6 3.0 6.6 2.1 virginica
#> 7 4.9 2.5 4.5 1.7 virginica
#> 8 7.3 2.9 6.3 1.8 virginica
#> 9 6.7 2.5 5.8 1.8 virginica
#> 10 7.2 3.6 6.1 2.5 virginica
#> 11 6.5 3.2 5.1 2.0 virginica
#> 12 6.4 2.7 5.3 1.9 virginica
#> 13 6.8 3.0 5.5 2.1 virginica
#> 14 5.7 2.5 5.0 2.0 virginica
#> 15 5.8 2.8 5.1 2.4 virginica
#> 16 6.4 3.2 5.3 2.3 virginica
#> 17 6.5 3.0 5.5 1.8 virginica
#> 18 7.7 3.8 6.7 2.2 virginica
#> 19 7.7 2.6 6.9 2.3 virginica
#> 20 6.0 2.2 5.0 1.5 virginica
#> 21 6.9 3.2 5.7 2.3 virginica
#> 22 5.6 2.8 4.9 2.0 virginica
#> 23 7.7 2.8 6.7 2.0 virginica
#> 24 6.3 2.7 4.9 1.8 virginica
#> 25 6.7 3.3 5.7 2.1 virginica
#> 26 7.2 3.2 6.0 1.8 virginica
#> 27 6.2 2.8 4.8 1.8 virginica
#> 28 6.1 3.0 4.9 1.8 virginica
#> 29 6.4 2.8 5.6 2.1 virginica
#> 30 7.2 3.0 5.8 1.6 virginica
#> 31 7.4 2.8 6.1 1.9 virginica
#> 32 7.9 3.8 6.4 2.0 virginica
#> 33 6.4 2.8 5.6 2.2 virginica
#> 34 6.3 2.8 5.1 1.5 virginica
#> 35 6.1 2.6 5.6 1.4 virginica
#> 36 7.7 3.0 6.1 2.3 virginica
#> 37 6.3 3.4 5.6 2.4 virginica
#> 38 6.4 3.1 5.5 1.8 virginica
#> 39 6.0 3.0 4.8 1.8 virginica
#> 40 6.9 3.1 5.4 2.1 virginica
#> 41 6.7 3.1 5.6 2.4 virginica
#> 42 6.9 3.1 5.1 2.3 virginica
#> 43 5.8 2.7 5.1 1.9 virginica
#> 44 6.8 3.2 5.9 2.3 virginica
#> 45 6.7 3.3 5.7 2.5 virginica
#> 46 6.7 3.0 5.2 2.3 virginica
#> 47 6.3 2.5 5.0 1.9 virginica
#> 48 6.5 3.0 5.2 2.0 virginica
#> 49 6.2 3.4 5.4 2.3 virginica
#> 50 5.9 3.0 5.1 1.8 virginica
#> 51 5.1 3.5 1.4 0.2 setosa
#> 52 4.9 3.0 1.4 0.2 setosa
#> 53 4.7 3.2 1.3 0.2 setosa
#> 54 4.6 3.1 1.5 0.2 setosa
#> 55 5.0 3.6 1.4 0.2 setosa
#> 56 5.4 3.9 1.7 0.4 setosa
#> 57 4.6 3.4 1.4 0.3 setosa
#> 58 5.0 3.4 1.5 0.2 setosa
#> 59 4.4 2.9 1.4 0.2 setosa
#> 60 4.9 3.1 1.5 0.1 setosa
#> 61 5.4 3.7 1.5 0.2 setosa
#> 62 4.8 3.4 1.6 0.2 setosa
#> 63 4.8 3.0 1.4 0.1 setosa
#> 64 4.3 3.0 1.1 0.1 setosa
#> 65 5.8 4.0 1.2 0.2 setosa
#> 66 5.7 4.4 1.5 0.4 setosa
#> 67 5.4 3.9 1.3 0.4 setosa
#> 68 5.1 3.5 1.4 0.3 setosa
#> 69 5.7 3.8 1.7 0.3 setosa
#> 70 5.1 3.8 1.5 0.3 setosa
#> 71 5.4 3.4 1.7 0.2 setosa
#> 72 5.1 3.7 1.5 0.4 setosa
#> 73 4.6 3.6 1.0 0.2 setosa
#> 74 5.1 3.3 1.7 0.5 setosa
#> 75 4.8 3.4 1.9 0.2 setosa
#> 76 5.0 3.0 1.6 0.2 setosa
#> 77 5.0 3.4 1.6 0.4 setosa
#> 78 5.2 3.5 1.5 0.2 setosa
#> 79 5.2 3.4 1.4 0.2 setosa
#> 80 4.7 3.2 1.6 0.2 setosa
#> 81 4.8 3.1 1.6 0.2 setosa
#> 82 5.4 3.4 1.5 0.4 setosa
#> 83 5.2 4.1 1.5 0.1 setosa
#> 84 5.5 4.2 1.4 0.2 setosa
#> 85 4.9 3.1 1.5 0.2 setosa
#> 86 5.0 3.2 1.2 0.2 setosa
#> 87 5.5 3.5 1.3 0.2 setosa
#> 88 4.9 3.6 1.4 0.1 setosa
#> 89 4.4 3.0 1.3 0.2 setosa
#> 90 5.1 3.4 1.5 0.2 setosa
#> 91 5.0 3.5 1.3 0.3 setosa
#> 92 4.5 2.3 1.3 0.3 setosa
#> 93 4.4 3.2 1.3 0.2 setosa
#> 94 5.0 3.5 1.6 0.6 setosa
#> 95 5.1 3.8 1.9 0.4 setosa
#> 96 4.8 3.0 1.4 0.3 setosa
#> 97 5.1 3.8 1.6 0.2 setosa
#> 98 4.6 3.2 1.4 0.2 setosa
#> 99 5.3 3.7 1.5 0.2 setosa
#> 100 5.0 3.3 1.4 0.2 setosa
#> 101 7.0 3.2 4.7 1.4 versicolor
#> 102 6.4 3.2 4.5 1.5 versicolor
#> 103 6.9 3.1 4.9 1.5 versicolor
#> 104 5.5 2.3 4.0 1.3 versicolor
#> 105 6.5 2.8 4.6 1.5 versicolor
#> 106 5.7 2.8 4.5 1.3 versicolor
#> 107 6.3 3.3 4.7 1.6 versicolor
#> 108 4.9 2.4 3.3 1.0 versicolor
#> 109 6.6 2.9 4.6 1.3 versicolor
#> 110 5.2 2.7 3.9 1.4 versicolor
#> 111 5.0 2.0 3.5 1.0 versicolor
#> 112 5.9 3.0 4.2 1.5 versicolor
#> 113 6.0 2.2 4.0 1.0 versicolor
#> 114 6.1 2.9 4.7 1.4 versicolor
#> 115 5.6 2.9 3.6 1.3 versicolor
#> 116 6.7 3.1 4.4 1.4 versicolor
#> 117 5.6 3.0 4.5 1.5 versicolor
#> 118 5.8 2.7 4.1 1.0 versicolor
#> 119 6.2 2.2 4.5 1.5 versicolor
#> 120 5.6 2.5 3.9 1.1 versicolor
#> 121 5.9 3.2 4.8 1.8 versicolor
#> 122 6.1 2.8 4.0 1.3 versicolor
#> 123 6.3 2.5 4.9 1.5 versicolor
#> 124 6.1 2.8 4.7 1.2 versicolor
#> 125 6.4 2.9 4.3 1.3 versicolor
#> 126 6.6 3.0 4.4 1.4 versicolor
#> 127 6.8 2.8 4.8 1.4 versicolor
#> 128 6.7 3.0 5.0 1.7 versicolor
#> 129 6.0 2.9 4.5 1.5 versicolor
#> 130 5.7 2.6 3.5 1.0 versicolor
#> 131 5.5 2.4 3.8 1.1 versicolor
#> 132 5.5 2.4 3.7 1.0 versicolor
#> 133 5.8 2.7 3.9 1.2 versicolor
#> 134 6.0 2.7 5.1 1.6 versicolor
#> 135 5.4 3.0 4.5 1.5 versicolor
#> 136 6.0 3.4 4.5 1.6 versicolor
#> 137 6.7 3.1 4.7 1.5 versicolor
#> 138 6.3 2.3 4.4 1.3 versicolor
#> 139 5.6 3.0 4.1 1.3 versicolor
#> 140 5.5 2.5 4.0 1.3 versicolor
#> 141 5.5 2.6 4.4 1.2 versicolor
#> 142 6.1 3.0 4.6 1.4 versicolor
#> 143 5.8 2.6 4.0 1.2 versicolor
#> 144 5.0 2.3 3.3 1.0 versicolor
#> 145 5.6 2.7 4.2 1.3 versicolor
#> 146 5.7 3.0 4.2 1.2 versicolor
#> 147 5.7 2.9 4.2 1.3 versicolor
#> 148 6.2 2.9 4.3 1.3 versicolor
#> 149 5.1 2.5 3.0 1.1 versicolor
#> 150 5.7 2.8 4.1 1.3 versicolor