SSブログ

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

以前の記事「R: order()で並べ替え」のコメントで教えていただきました。データフレームでfactorにしておくと日本語でも並べ替えがうまくいくとのこと。

型を指定して行列をデータフレームにする。family: 科番号、japname: 和名、sciname: 学名。

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)
d <- data.frame(family = as.numeric(m[, 1]),
                japname = as.factor(m[, 2]),
                sciname = as.factor(m[, 3]))

科番号→学名で並び替え。

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

科番号→和名で並び替え。

> d[order(d$family, d$japname), ]
   family            japname                   sciname
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

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

nice! 0

コメント 0

コメントを書く

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

Facebook コメント

トラックバック 0