Rのこと。

記事は引っ越し作業中。2023年中までに引っ越しを完了させてブログは削除予定

lubridateパッケージのparse_date_time関数がうまくいかない?

よくわからないので調べる。下記の1つ目のケースがうまくいかない。

  • 1日の前に半角スペースがなく1桁→うまく変換されない
  • 1日の前に半角スペースがあり2桁→うまく変換される
  • 1日の前に0があって2桁→うまく変換される
library(lubridate)

parse_date_time("Apr 1, 2021", orders = "bdy", tz = "Asia/Tokyo") # 1桁:NG
[1] "2021-01-20 JST"

------------------------------------------------------
// version 1.8.0 では問題なく変換されるようになった
parse_date_time("Apr 1, 2021", orders = "bdy", tz = "Asia/Tokyo") # 1桁:NG
[1] "2021-04-01 JST"
------------------------------------------------------

parse_date_time("Apr  1, 2021", orders = "bdy", tz = "Asia/Tokyo") # 2桁:OK
[1] "2021-04-01 JST"

parse_date_time("Apr 01, 2021", orders = "bdy", tz = "Asia/Tokyo") # 2桁:OK
[1] "2021-04-01 JST"

mdy()も似たような感じ・・・。

mdy("Apr 1, 2010")  # 1桁:NG
[1] "2010-01-20"

------------------------------------------------------
// version 1.8.0 では問題なく変換されるようになった
mdy("Apr 1, 2010") 
[1] "2010-04-01"
------------------------------------------------------

mdy("Apr  1, 2010") # 2桁:OK
[1] "2010-04-01"

mdy("Apr 01, 2010") # 2桁:OK
[1] "2010-04-01"

mdy("April 1, 2010")# 1桁:NG
[1] "2010-01-20"
------------------------------------------------------
// version 1.8.0 では問題なく変換されるようになった
mdy("April 1, 2010")
[1] "2010-04-01"
------------------------------------------------------

mdy("April  1, 2010") # 2桁:OK
[1] "2010-04-01"

mdy("April  01, 2010") # 2桁:OK
[1] "2010-04-01"

スペースを無くすとうまく判定される模様。

mdy("Apr1,2010")  # 1桁:OK
[1] "2010-04-01"

mdy("Apr01,2010") # 2桁:OK
[1] "2010-04-01"

mdy("April1,2010")  # 1桁:OK
[1] "2010-04-01"

mdy("April01,2010") # 2桁:OK
[1] "2010-04-01"