R×stringr::str_order 文字ベクトルを順序付けする

R言語のstringrパッケージに含まれているstr_order()関数について解説します。この関数は、「文字列のアルファベット順(または数値順)のベースとなるインデックス(位置)を取得したい」ときに使える関数です。一言で言うと、「ベクトル自体を並び替えるのではなく、並び替えた後の並び順が知りたいとき」に使います。

stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。

概要

str_order()は、文字ベクトルを順序付けするための関数です。str_order()は、データ抽出に使用した場合に、目的の順序を返す整数ベクトルを返します。つまり、x[str_order(x)]str_sort()と同じです。

使い方


str_order(
  x,
  decreasing = FALSE,
  na_last = TRUE,
  locale = "en",
  numeric = FALSE,
  ...
)

引数

x

文字ベクトルまたは文字ベクトルに変換可能なものを指定します。

decreasing = FALSE

真偽値を指定します。
– FALSE(デフォルト): 低い順から高い順にソート
– TRUE : 高い順から低い順にソート

na_last = TRUE

NAをどこに配置するかを指定します。

– TRUE: 末尾に置き、NA は削除
– FALSE: 先頭に置き、NA は削除

locale = “en”

比較に使用するロケールを指定します。
使用可能なすべてのオプションについては、stringi::stri_locale_list() を参照してください。デフォルトの動作がプラットフォーム間で一貫しているように、デフォルトは “en”(英語)です。

numeric = FALSE

真偽値を指定します。TRUE の場合、数字を文字列ではなく数値としてソートします。

照合を制御するために使用されるその他のオプションを指定します。stringi::stri_opts_collator() に渡されます。

使用例

準備

あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。


# library(tidyverse)でもよい
library(stringr)

並び替えた後の並び順を取得

文字列「りんご」と「ごりら」、「らっぱ」の順位付けしたベクトルを取得するには次のようにします。


str_order(c("りんご", "ごりら", "らっぱ"))

[1] 2 3 1

参考文献