5

私はプロットしたい R に供給している標準の UNIX 整数タイムスタンプのセットをすべて UTC (GMT) で持っています。私は次の形式のコードを使用しています:

d$date_time <- as.POSIXct(d$date_time,origin="1970-01-01",tz="GMT")

標準のUNIXタイムスタンプUTC整数の列を、ある種のプロット可能なオブジェクトのセットであると想定するものに変換します。これをプロットすると、データはほぼ良好に見えますが、コンピューターのローカル タイムゾーンまたはその他のタイムゾーン調整によって、すべてのデータが何らかの形でオフセットされているかどうかはわかりません。as.POSIXct()これは、a) を呼び出すとき、および b) データをプロットするときに、データに対してどのような調整が行われるか (もしあれば) を理解していないためです。だから、これらは私の質問です:

  1. 上で指定したときtz="GMT"、これは正確に何をするようにコンピュータに指示していますか? 3 つの可能性があると思います: i) 「データは GMT であり、それを現地時間に変換したい」 ii) 「データは常に現地時間であると想定されており、GMT に変換したい」 iii) 「データは常にGMT であると想定されており、GMT のままにしてほしいので、調整しないでください。」
  2. データを ( でxyplot) プロットするとき、プロット関数は時間を視覚的に調整しますか? もしそうなら、どのような調整ですか?

内部データ構造がタイムゾーン情報を保存する方法と、それらのデータ構造がさまざまなコマンドによってどのように変換されるかを誰かが説明できれば、問題を解決するのに役立つと思います。基本的に、私は最初から表示の時点まで UTC を使用したいと考えています。ここで、タイムゾーンを調整したいと思うかもしれませんが、コンピューターが黙って私のために決定するのではなく、明示的に行うのが理想的です。

4

1 に答える 1

6

R の Date および Time クラスは非常に強力ですが、慣れるまでに時間がかかります。特に TZ の調整はトリッキーですが、文字の構成と変換に関連しています。

入力を数値に制限する次の例を考えてみましょう。細かい制御が可能です:

R> tt <- as.POSIXct(0, origin="1970-01-01")
R> str(tt)
 POSIXct[1:1], format: "1970-01-01"
R> tt
[1] "1970-01-01 CST"
R> 
R> tt <- as.POSIXct(600, origin="1970-01-01")
R> tt
[1] "1970-01-01 00:10:00 CST"
R> 
tt <- as.POSIXct(600, origin="1970-01-01", tz="UTC")
R> tt
[1] "1970-01-01 00:10:00 UTC"
R> 
R> as.numeric(tt)
[1] 600
R> 

日付の算術演算、変換difftime()などをすべて取得し、純粋な数値を渡すこともできます。また:

R> tt <- as.POSIXct(600, origin="1970-01-01", tz="UTC")
R> tt
[1] "1970-01-01 00:10:00 UTC"
R> tt2 <- tt + 1.234567
R> tt2
[1] "1970-01-01 00:10:01.234566 UTC"
R> 

attributes()TZ が設定されているかどうかを確認するために使用できます。

R> attributes(tt)
$tzone
[1] "UTC"

$class
[1] "POSIXct" "POSIXt" 

R> 

したがって、作成と変換に注意すれば、UTC ベースの時間データに関する完全なツールキットを実際に使用できます。

于 2012-12-13T14:21:34.950 に答える