SSブログ

R: order()で並べ替え [統計]

こういうデータがあったとする。

m <- matrix(c(
    261, "コナラ","Quercus serrata",
     65, "ウリハダカエデ","Acer rufinerve",
    288, "アケビ","Akebia quinata",
    177, "モチツツジ","Rhododendron macrosepalum",
    288, "ミツバアケビ","Akebia trifoliata",
     51, "タラノキ","Aralia elata",
    261, "アラカシ","Quercus glauca",
    261, "アベマキ","Quercus variabilis",
    177, "コバノミツバツツジ","Rhododendron reticulatum",
    171, "エゴノキ","Styrax japonica"),
  ncol = 3, byrow = TRUE)

1列目が科コード、2列目が和名、3列目が学名。ある場所での出現種といったイメージ。

表示するとこうなる。

> m
      [,1]  [,2]                 [,3]                       
 [1,] "261" "コナラ"             "Quercus serrata"          
 [2,] "65"  "ウリハダカエデ"     "Acer rufinerve"           
 [3,] "288" "アケビ"             "Akebia quinata"           
 [4,] "177" "モチツツジ"         "Rhododendron macrosepalum"
 [5,] "288" "ミツバアケビ"       "Akebia trifoliata"        
 [6,] "51"  "タラノキ"           "Aralia elata"             
 [7,] "261" "アラカシ"           "Quercus glauca"           
 [8,] "261" "アベマキ"           "Quercus variabilis"       
 [9,] "177" "コバノミツバツツジ" "Rhododendron reticulatum" 
[10,] "171" "エゴノキ"           "Styrax japonica"          

科コード>学名の順にならべかえてみる。

> m[order(as.numeric(m[,1]), m[,3]),]
      [,1]  [,2]                 [,3]                       
 [1,] "51"  "タラノキ"           "Aralia elata"             
 [2,] "65"  "ウリハダカエデ"     "Acer rufinerve"           
 [3,] "171" "エゴノキ"           "Styrax japonica"          
 [4,] "177" "モチツツジ"         "Rhododendron macrosepalum"
 [5,] "177" "コバノミツバツツジ" "Rhododendron reticulatum" 
 [6,] "261" "アラカシ"           "Quercus glauca"           
 [7,] "261" "コナラ"             "Quercus serrata"          
 [8,] "261" "アベマキ"           "Quercus variabilis"       
 [9,] "288" "アケビ"             "Akebia quinata"           
[10,] "288" "ミツバアケビ"       "Akebia trifoliata"   

ただし、日本語ではうまく並び替えできない。

> m[order(as.numeric(m[,1]), m[,2]),]
      [,1]  [,2]                 [,3]                       
 [1,] "51"  "タラノキ"           "Aralia elata"             
 [2,] "65"  "ウリハダカエデ"     "Acer rufinerve"           
 [3,] "171" "エゴノキ"           "Styrax japonica"          
 [4,] "177" "モチツツジ"         "Rhododendron macrosepalum"
 [5,] "177" "コバノミツバツツジ" "Rhododendron reticulatum" 
 [6,] "261" "コナラ"             "Quercus serrata"          
 [7,] "261" "アベマキ"           "Quercus variabilis"       
 [8,] "261" "アラカシ"           "Quercus glauca"           
 [9,] "288" "アケビ"             "Akebia quinata"           
[10,] "288" "ミツバアケビ"       "Akebia trifoliata"        

タグ:R
nice!(0)  コメント(2)  トラックバック(1) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 2

r-de-r

データをデータフレームに読み込むと,1列名は整数,2,3列は factor になる。そう言う風にすれば,うまくいくと思います。
> m[order(m[,1], m[,2]),]
V1 V2 V3
6 51 タラノキ Aralia elata
2 65 ウリハダカエデ Acer rufinerve
10 171 エゴノキ Styrax japonica
9 177 コバノミツバツツジ Rhododendron reticulatum
4 177 モチツツジ Rhododendron macrosepalum
8 261 アベマキ Quercus variabilis
7 261 アラカシ Quercus glauca
1 261 コナラ Quercus serrata
3 288 アケビ Akebia quinata
5 288 ミツバアケビ Akebia trifoliata

画像認証見にくい
by r-de-r (2010-09-01 15:26) 

hiroki

おお、なるほど。ありがとうございます。

> 画像認証見にくい

たしかに。
by hiroki (2010-09-01 20:22) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 1