Last updated: October 2009. Kajiyama                    [ 目次に戻る ]

「iris」のデータを大きさで並べ替える


  1.  並び替えをする関数

    たくさんのデータを、小さい順(昇順)あるいは大きい順(降順)に並べ替える作業をソート(整列)と言う.

    並び替えの関数に,order(並べ替えしたときの元の位置を返す),sort.list(並べ替えしたときの元の位置を返す),

    sort(昇順),rev(逆順)がある. 参考 [視覚的なソートの仕組み 鹿児島大学]


  2.  使用する「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である.


  3. 変数番号を選択しサンプルの並べ替えをし,これを新しいデータフレームとして作成する

    「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
    

[ 目次に戻る ]