处理R中的时间戳

我有多个测量列表。 在每个列表中有timestramp格式化为一个string(“2009-12-24 21:00:07.0”),我知道列表中的每个测量是分隔5秒。 我想把所有的数据合并到R中的一个巨大的data.frame中。之后,我想能够轻松地访问两个测量的时间差,所以我可能应该将数据转换成与字符不同的东西。

我应该使用哪种格式来存储时间? 我应该使用一些包中的时间格式吗?

你需要基本R的(标准) POSIXttypes,它可以作为一个POSIXct (实质上是一个双重的代表自从epoch以来的小数秒)或者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> 

最后, 动物园包是一个非常灵活和充分logging的容器matrix与相关的date/时间指数。