- 並び替えをする関数
たくさんのデータを、小さい順(昇順)あるいは大きい順(降順)に並べ替える作業をソート(整列)と言う.
並び替えの関数に,order(並べ替えしたときの元の位置を返す),sort.list(並べ替えしたときの元の位置を返す),
sort(昇順),rev(逆順)がある. 参考 [視覚的なソートの仕組み 鹿児島大学]
- 使用する「iris」のデータ構造の確認
(1) 「irisデータ」のデータ構造
.「コンソール」 画面に,
str (iris) # と記述すると,「irisのデータ構造」が表示され,5変数の名前と,型が表示される.
・Sepal.Length: num 数値型 ・Sepal.Width : num 数値型 ・Petal.Length: num 数値型 ・Petal.Width : num 数値型
・Species : Factor カテゴリ型
|
あやめの大きな3枚のはなびらは,「Sepal がく片」で,小さな3枚のはなびらが,「Petal 花びら」である.
Sepal「がく片」の長さと幅・Petal「花びら」の長さと幅
Species「あやめ3品種 [setosa・versicolor・virginica]」
|
> str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
|
(2) 「irisデータ」のデータリスト
・「コンソール」 画面に,
iris # と記述すると,Rに組み込みこまれているFisherの研究で使われた「iris」データ 150サンプルが表示される.
> iris
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 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.0 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.0 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
11 5.4 3.7 1.5 0.2 setosa
12 4.8 3.4 1.6 0.2 setosa
13 4.8 3.0 1.4 0.1 setosa
14 4.3 3.0 1.1 0.1 setosa
15 5.8 4.0 1.2 0.2 setosa
16 5.7 4.4 1.5 0.4 setosa
17 5.4 3.9 1.3 0.4 setosa
18 5.1 3.5 1.4 0.3 setosa
19 5.7 3.8 1.7 0.3 setosa
20 5.1 3.8 1.5 0.3 setosa
21 5.4 3.4 1.7 0.2 setosa
・・・・・・・・・・・・・・・・・・・・・
|
|
・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・
129 6.4 2.8 5.6 2.1 virginica
130 7.2 3.0 5.8 1.6 virginica
131 7.4 2.8 6.1 1.9 virginica
132 7.9 3.8 6.4 2.0 virginica
133 6.4 2.8 5.6 2.2 virginica
134 6.3 2.8 5.1 1.5 virginica
135 6.1 2.6 5.6 1.4 virginica
136 7.7 3.0 6.1 2.3 virginica
137 6.3 3.4 5.6 2.4 virginica
138 6.4 3.1 5.5 1.8 virginica
139 6.0 3.0 4.8 1.8 virginica
140 6.9 3.1 5.4 2.1 virginica
141 6.7 3.1 5.6 2.4 virginica
142 6.9 3.1 5.1 2.3 virginica
143 5.8 2.7 5.1 1.9 virginica
144 6.8 3.2 5.9 2.3 virginica
145 6.7 3.3 5.7 2.5 virginica
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica
|
|
サンプル番号1−50が品種setosa,サンプル番号51−100が品種versicolor,サンプル番号101−150が品種virginicaである.
変数番号1がSepal.Length,変数番号2がSepal.Width,変数番号3がPetal.Length,変数番号4がPetal.Width,変数番号5がSpeciesである.
- 変数番号を選択しサンプルの並べ替えをし,これを新しいデータフレームとして作成する
「iris」データフレームには変数名と変数番号があり,これを指定してデータ全体を並べ替える.
変数番号1,Sepal.Lengthの測定値を並べ替える.
(1) 1変数「Sepal.Length」のさんぷるを昇順に並べ替える order
「コンソール」 画面に,
x1 <- order( iris$Sepal.Length ) # と記述すると,Sepal.Lengthの大きさの並べ替えを行い,
x1 # と記述すると,結果をサンプル番号の順序で表示する.
iris.x1 <- iris[ x1 , ] # と記述し,並べ替えたサンプル番号順のデータフレーム iris.x1 を作成する.
iris.x1 # と記述し,データフレーム iris.x1のリストを確認する.
> x1 <- order( iris$Sepal.Length ) # 1変数を並べ替える
> x1
[1] 14 9 39 43 42 4 7 23 48 3 30 12 13 25 31 46 2 10 35
[20] 38 58 107 5 8 26 27 36 41 44 50 61 94 1 18 20 22 24 40
[39] 45 47 99 28 29 33 60 49 6 11 17 21 32 85 34 37 54 81 82
[58] 90 91 65 67 70 89 95 122 16 19 56 80 96 97 100 114 15 68 83
[77] 93 102 115 143 62 71 150 63 79 84 86 120 139 64 72 74 92 128 135
[96] 69 98 127 149 57 73 88 101 104 124 134 137 147 52 75 112 116 129 133
[115] 138 55 105 111 117 148 59 76 66 78 87 109 125 141 145 146 77 113 144
[134] 53 121 140 142 51 103 110 126 130 108 131 106 118 119 123 136 132
> iris.x1 <- iris[ x1 , ]
> iris.x1
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
14 4.3 3.0 1.1 0.1 setosa
9 4.4 2.9 1.4 0.2 setosa
39 4.4 3.0 1.3 0.2 setosa
43 4.4 3.2 1.3 0.2 setosa
42 4.5 2.3 1.3 0.3 setosa
4 4.6 3.1 1.5 0.2 setosa
7 4.6 3.4 1.4 0.3 setosa
23 4.6 3.6 1.0 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
130 7.2 3.0 5.8 1.6 virginica
108 7.3 2.9 6.3 1.8 virginica
131 7.4 2.8 6.1 1.9 virginica
106 7.6 3.0 6.6 2.1 virginica
118 7.7 3.8 6.7 2.2 virginica
119 7.7 2.6 6.9 2.3 virginica
123 7.7 2.8 6.7 2.0 virginica
136 7.7 3.0 6.1 2.3 virginica
132 7.9 3.8 6.4 2.0 virginica
|
(2) 2変数「Sepal.Length」と「Sepal.Width」を昇順(小さい順)に並べ替える order
変数番号1がSepal.Length,変数番号2がSepal.Widthである.この2変数の順序で全体を並べ替える.
「コンソール」 画面に,
x2 <- order( iris$Sepal.Length, iris$Sepal.Width ) # と記述し2変数の並べ替えを行う.
x2 # と記述し2変数の並べ替え結果をサンプル番号の順序で示す.
iris.x2 <- iris[ x2 , ] # と記述し,並べ替えたサンプル番号順のデータフレーム iris.x2 を作成する.
iris.x2 # と記述し,データフレーム iris.x2のリストを確認する.
> x2 <- order( iris$Sepal.Length, iris$Sepal.Width ) # 2変数を並べ替える
> x2
[1] 14 9 39 43 42 4 48 7 23 3 30 13 46 31 12 25 58 107 2 10
[21] 35 38 61 94 26 36 50 8 27 41 44 5 99 24 40 1 18 22 20 45
[41] 47 60 29 28 33 49 85 21 32 11 6 17 54 81 82 90 91 37 34 70
[61] 95 122 65 67 89 114 80 56 100 97 96 19 16 93 68 83 102 143 115 15
[81] 62 150 71 63 120 84 79 139 86 135 72 74 64 92 128 69 127 98 149 88
[101] 73 147 124 134 104 57 101 137 112 129 133 75 138 52 116 55 105 117 148 111
[121] 59 76 109 78 146 66 87 141 125 145 77 113 144 53 140 142 121 51 103 130
[141] 126 110 108 131 106 119 123 136 118 132
> iris.x2 <- iris[ x2 , ]
> iris.x2
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
14 4.3 3.0 1.1 0.1 setosa
9 4.4 2.9 1.4 0.2 setosa
39 4.4 3.0 1.3 0.2 setosa
43 4.4 3.2 1.3 0.2 setosa
42 4.5 2.3 1.3 0.3 setosa
4 4.6 3.1 1.5 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
7 4.6 3.4 1.4 0.3 setosa
23 4.6 3.6 1.0 0.2 setosa
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
103 7.1 3.0 5.9 2.1 virginica
130 7.2 3.0 5.8 1.6 virginica
126 7.2 3.2 6.0 1.8 virginica
110 7.2 3.6 6.1 2.5 virginica
108 7.3 2.9 6.3 1.8 virginica
131 7.4 2.8 6.1 1.9 virginica
106 7.6 3.0 6.6 2.1 virginica
119 7.7 2.6 6.9 2.3 virginica
123 7.7 2.8 6.7 2.0 virginica
136 7.7 3.0 6.1 2.3 virginica
118 7.7 3.8 6.7 2.2 virginica
132 7.9 3.8 6.4 2.0 virginica
|
(3) 2変数「Sepal.Length」と「Sepal.Width」を降順(大きい順)に並べ替える order
変数番号1がSepal.Length,変数番号2がSepal.Widthである.この2変数の順序で全体を並べ替える.
降順にするには,order( iris$Sepal.Length, iris$Sepal.Width, decreasing = TRUE )
「コンソール」 画面に,
x3 <- order( iris$Sepal.Length, iris$Sepal.Width, decreasing = TRUE ) # と記述し,
# Sepal.LengthとSepal.Widthの並べ替えを行い,結果をサンプル番号の順序で示す.
iris.x3 <- iris[ x3 , ] # と記述し,並べ替えたサンプル番号順のデータを作成する.
iris.x3 # と記述し,データフレーム iris.x3のリストを確認する.
> x3 <- order(iris$Sepal.Length, iris$Sepal.Width, decreasing=TRUE) # 2変数を降順で並べ替え
> iris.x3 <- iris[ x3 , ]
> iris.x3
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
132 7.9 3.8 6.4 2.0 virginica
118 7.7 3.8 6.7 2.2 virginica
136 7.7 3.0 6.1 2.3 virginica
123 7.7 2.8 6.7 2.0 virginica
119 7.7 2.6 6.9 2.3 virginica
106 7.6 3.0 6.6 2.1 virginica
131 7.4 2.8 6.1 1.9 virginica
108 7.3 2.9 6.3 1.8 virginica
110 7.2 3.6 6.1 2.5 virginica
126 7.2 3.2 6.0 1.8 virginica
130 7.2 3.0 5.8 1.6 virginica
103 7.1 3.0 5.9 2.1 virginica
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
23 4.6 3.6 1.0 0.2 setosa
7 4.6 3.4 1.4 0.3 setosa
48 4.6 3.2 1.4 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
42 4.5 2.3 1.3 0.3 setosa
43 4.4 3.2 1.3 0.2 setosa
39 4.4 3.0 1.3 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
14 4.3 3.0 1.1 0.1 setosa
|
|