0.連続する日付のベクトル
Rで連続する日付のベクトルを作るには以下の記事のようにseq()関数を使います。
R言語で連続する日付のベクトルを作る|Colorless Green Ideas
次の例では2021-12-29から2022-01-02の日付を生成しています。
seq(as.POSIXlt("2021-12-29"), as.POSIXlt("2022-01-02"), by = "day")
[1] "2021-12-29 JST" "2021-12-30 JST" "2021-12-31 JST" "2022-01-01 JST"
[5] "2022-01-02 JST"
連続させる間隔を指定するbyには以下のような文字列が指定できます。(@WolfMoon さん、ご指摘ありがとうございます)
- "sec"(秒)
- "min"(分)
- "hour"(時間)
- "day" (日)
- "DSTday"(日 サマータイム考慮)
- "week" (週)
- "month" (月)
- "quarter" (四半期)
- "year" (年)
この記事では、タイムスタンプの時分秒で連続したベクトルをつくりたいと思います。
1.連続する秒のベクトル
秒の場合は、開始と終了にタイムスタンプを与えてby="sec"またはby=1にします。by="senconds"は指定できませんでした。
以下の例では2021-12-31 23:59:57から2022-01-01 00:00:01までの1秒ごとに連続するタイムスタンプを生成しています。
seq(as.POSIXlt("2021-12-31 23:59:57"),as.POSIXlt("2022-01-01 00:00:01"),by="sec")
[1] "2021-12-31 23:59:57 JST" "2021-12-31 23:59:58 JST"
[3] "2021-12-31 23:59:59 JST" "2022-01-01 00:00:00 JST"
[5] "2022-01-01 00:00:01 JST"
2.連続する分のベクトル
秒の場合は、開始と終了にタイムスタンプを与えてby="min"またはby=60にします。60秒ごとという意味になります。
以下の例では2021-12-31 23:57:00から2022-01-01 00:01:00までの1分ごとに連続するタイムスタンプを生成しています。
seq(as.POSIXlt("2021-12-31 23:57:00"),as.POSIXlt("2022-01-01 00:01:00"),by="min")
[1] "2021-12-31 23:57:00 JST" "2021-12-31 23:58:00 JST"
[3] "2021-12-31 23:59:00 JST" "2022-01-01 00:00:00 JST"
[5] "2022-01-01 00:01:00 JST"
3.連続する時間のベクトル
時間の場合は、開始と終了にタイムスタンプを与えてby="hour"またはby=60*60にします。60秒×60分=1時間ごとという意味になります。
以下の例では2021-12-31 21:00:00から2022-01-01 01:00:00までの1時間とに連続するタイムスタンプを生成しています。
seq(as.POSIXlt("2021-12-31 21:00:00"),as.POSIXlt("2022-01-01 01:00:00"),by="hour")
[1] "2021-12-31 21:00:00 JST" "2021-12-31 22:00:00 JST"
[3] "2021-12-31 23:00:00 JST" "2022-01-01 00:00:00 JST"
[5] "2022-01-01 01:00:00 JST"
■参考
- seq.POSIXt function - RDocumentation
- time - Sequence with fractional second intervals in R - Stack Overflow
■テスト環境
R 4.0.5
Windows 10 64bit