!半端な日付文字を日付型に変換する 通常は(データ処理にそれなりに日付を使う人にとっては当然に)日付は日付型で入力/保存するものだ。それはスプレッドシートであっても同じだ。 他者からデータをもらうと、日付の入力で文字列が使われていて戸惑うことがある。 例えば、月が全角、日が半角などで、しかも年が入っていないなど。 lubridateパッケージを使うとかなり柔軟に日付変換をしてくれるが、年月日の三要素が揃っていないと難しそうだ。 > ymd("2022年12年21日") #正しい日本語表記 [1] "2022-12-21" また、和暦の表記が正しければ、zipanguパッケージで日付型に変換できる。 > zipangu::convert_jdate("令和4年12年21日") [1] "2022-12-21" !けしからん日付の場合 > c("1月15日", "2月3日") %>% #けしからん日付の例 str_c(year(today()),"年", .) |> #処理日の年をとりあえずつけてやる。 stringi::stri_trans_nfkc() |> #全角数字を半角数字に変換 ymd() #年月日(日付型)に変換 [1] "2022-01-15" "2022-02-03" 実際には、年が一つ前であるべきことも多いので、例えば年明け早々にデータ処理する際には注意が必要だ。