備忘ログ

チラシの裏的備忘録&メモ

Rで文字列中のアラビア数字を漢数字に変換する関数をつくった

タイトルのまま、Rで文字列中のアラビア数字を漢数字に変換する関数をつくった。逐字的に変換する関数(例えば64なら六四となる)と、アラビア数字を計算して漢数字に変換する関数(例えば64なら六十四となる)を備えている。

パッケージ化してGithubに公開した。

github.com

devtools::install_github("indenkun/arabic2kansuji")

でインストールできる。

使い方はREADMEに全部書いている。

できることまとめ

  • アラビア数字を漢数字に逐次的に置換してやり変換する。
arabic2kansuji::arabic2kansuji(1989)
## [1] "一九八九"
  • アラビア数字を含む文字列のアラビア数字のみを漢数字に逐次的に置換して変換する。
arabic2kansuji::arabic2kansuji("昭和64年は1989年1月7日までです。")
## [1] "昭和六四年は一九八九年一月七日までです。"
  • 数字のみを入力して、漢数字に計算して変換する。
arabic2kansuji::arabic2kansuji_num(1989)
## [1] "千九百八十九"
  • アラビア数字を含む文字列のアラビア数字を計算して漢数字に変換し、他の文字列は保持して出力する。
arabic2kansuji::arabic2kansuji_all("昭和64年は1989年1月7日までです。")
## [1] "昭和六十四年は千九百八十九年一月七日までです。"

他にも、引数を指定してデフォルトでは半角数字のみしか変換しないが全角数字も変換できるようになったり、0を置換するときに〇じゃなく零を指定することもできる。

雑感

正直使い所はどこかというと、よくわからない。個人的には{stringr}使ってみてこういう挙動するのかと思って面白く学べた。

この関数を作るに当たり、{stringr}を使って正規表現で文字列マッチングしたのだけれど、(自分だけかもしれないが)思っていた挙動異なって驚いたので後でメモしておく。 追記:書いた

indenkun.hatenablog.com

あと、この関数を作るに当たり考えたことを応用して、文中の漢数字をアラビア数字に変換するための処理について考えたので後でメモしておく。 追記:書いた

indenkun.hatenablog.com