13

R を時系列分析に使用したいと考えています。時系列モデルを作成し、パッケージ timeDate および Forecast の関数を使用したいと考えています。

CET タイム ゾーンの日中のデータがあります (15 分のデータ、1 時間あたり 4 データ ポイント)。3 月 31 日にサマータイムが実施され、通常は 96 個のデータ ポイントのうち 4 個が欠落しています。10 月 28 日には、時間が戻ったため、4 つのデータ ポイントが多すぎます。

私の時系列モデルでは、常に 96 個のデータ ポイントが必要です。そうしないと、日中の季節性が台無しになります。

これについて何か経験はありますか?そのようなデータ処理を自動化するのに役立つR関数またはパッケージを知っていますか?エレガントなものですか? ありがとうございました!

4

3 に答える 3

17

センサーからの水文データでも同様の問題がありました。私のタイムスタンプはUTC+1(CET)であり、夏時間(UTC + 2、CEST)に切り替わりませんでした。データを1時間オフにしたくなかったので(UTCが使用された場合はそうなります)、の%z変換仕様を採用しstrptimeました。?strptimeあなたは見つけるでしょう:

%zUTCからの時間と分での符号付きオフセット。したがって、-0800はUTCから8時間遅れています。

例:2012年、標準時からDSTへの切り替えは2012-03-25に行われたため、この日の02:00はありません。「2012-03-2502:00:00」をPOSIXct-Objectに変換しようとすると、

> as.POSIXct("2012-03-25 02:00:00", tz="Europe/Vienna")
[1] "2012-03-25 CET"

エラーや警告は表示されず、時刻なしで日付が表示されます(この動作は文書化されています)。

を使用format = "%z"すると、目的の結果が得られます。

> as.POSIXct("2012-03-25 02:00:00 +0100", format="%F %T %z", tz="Europe/Vienna")
[1] "2012-03-25 03:00:00 CEST"

このインポートを容易にするために、適切なデフォルト値を使用して小さな関数を作成しました。

as.POSIXct.no.dst <- function (x, tz = "", format="%Y-%m-%d %H:%M", offset="+0100", ...)
{
  x <- paste(x, offset)
  format <- paste(format, "%z")
  as.POSIXct(x, tz, format=format, ...)
}

> as.POSIXct.no.dst(c("2012-03-25 00:00", "2012-03-25 01:00", "2012-03-25 02:00", "2012-03-25 03:00"))
[1] "2012-03-25 00:00:00 CET"  "2012-03-25 01:00:00 CET"  "2012-03-25 03:00:00 CEST"
[4] "2012-03-25 04:00:00 CEST"
于 2012-12-13T19:29:13.343 に答える
14

夏時間を必要としない場合は、夏時間を持たないタイムゾーン(GMT、UTCなど)に変換してください。

times <- .POSIXct(times, tz="GMT")
于 2012-12-13T17:32:35.310 に答える