1. 学ぶ
  2. /
  3. コース
  4. /
  5. Rで扱う日付と時刻

Connected

演習

月を扱うときの落とし穴

ymd("2018-01-31") + months(1) は何を返すべきでしょうか? 30日後、31日後、それとも28日後? 試してみましょう。一般に、lubridate は次の月の同じ「日付」(月内の日)を返しますが、2月31日は存在しないため、lubridate は欠損値 NA を返します。

別の加算・減算演算子 %m+% と %m-% は異なる挙動をします。存在しない日付に対して NA を返す代わりに、存在する最後の日付までロールバックします。

今年の各月の最終日を並べるシーケンスを作ることで、その挙動を確かめましょう。

指示

100 XP

今年の1月31日を表す日付 jan_31 をワークスペースに用意してあります。

  • 1か月の期間を1から12までのシーケンスとして作成してください。
  • month_seq を jan_31 に加えてみましょう。31日が存在しない月で何が起きるかに注目してください
  • 次に %m+% 演算子を使って、month_seq を jan_31 に加えてみましょう。
  • %m-% 演算子を使って、month_seq を jan_31 から引くことも試してください。