处理R中的时间戳

Chr*_*ian 48 time timestamp r

我有多个测量列表.在每个列表中将timestramp格式化为字符串("2009-12-24 21:00:07.0"),我知道列表中的每个度量值相隔5秒.我希望将所有数据组合成R中的巨大data.frame.之后我希望能够轻松访问两个测量的时差,因此我可能应该将数据转换为不同于字符的数据.

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

Dir*_*tel 65

你想要POSIXt基本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> 
Run Code Online (Sandbox Code Playgroud)

至于阅读它们,请参阅 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> 
Run Code Online (Sandbox Code Playgroud)

最后,动物园包是一个非常通用且记录良好的矩阵容器,具有相关的日期/时间索引.

  • 谢谢.为R函数命名的人是残酷的.我的意思是你怎么猜POSIXlt与时间有关? (15认同)
  • 但是`help.search("date time")`会发现相邻函数. (7认同)
  • @DirkEddelbuettel是的,这很有帮助.反正这是没有任何借口的坏命名.代码越可读,无需文档,越好. (4认同)