web-dev-qa-db-ja.com

Rでのタイムスタンプの処理

複数の測定リストがあります。各リストには、文字列としてフォーマットされたタイムストラップ( "2009-12-24 21:00:07.0")があり、リスト内の各測定値は5秒で区切られています。すべてのデータをRの巨大なdata.frameに結合します。その後、2つの測定値の時間差に簡単にアクセスできるようにしたいので、データを文字とは異なるものに変換する必要があります。

時刻を保存するにはどの形式を使用すればよいですか?使用するパッケージに時間形式はありますか?

48
Christian

'コンパクトな形式'でPOSIXt(基本的にはエポックからの小数秒を表すdouble)または長い形式として持つことができる、ベースRからの(標準)POSIXct型が必要です。 POSIXlt(サブ要素を含む)。クールなことは、これに算術などが定義されていることです-help(DateTimeClasses)を参照してください

簡単な例:

_R> now <- Sys.time()
R> now
[1] "2009-12-25 18:39:11 CST"
R> as.numeric(now)
[1] 1.262e+09
R> now + 10  # adds 10 seconds
[1] "2009-12-25 18:39:21 CST"
R> as.POSIXlt(now)
[1] "2009-12-25 18:39:11 CST"
R> str(as.POSIXlt(now))
 POSIXlt[1:9], format: "2009-12-25 18:39:11"
R> unclass(as.POSIXlt(now))
$sec
[1] 11.79

$min
[1] 39

$hour
[1] 18

$mday
[1] 25

$mon
[1] 11

$year
[1] 109

$wday
[1] 5

$yday
[1] 358

$isdst
[1] 0

attr(,"tzone")
[1] "America/Chicago" "CST"             "CDT"            
R> 
_

それらの読み込みについては、help(strptime)を参照してください

違いについても、簡単です:

_R> Jan1 <- strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
R> difftime(now, Jan1, unit="week")
Time difference of 51.25 weeks
R> 
_

最後に、 Zooパッケージ は、日付/時刻インデックスが関連付けられたマトリックス用の非常に用途の広い文書化されたコンテナです。

65