R POSIXct起源奇怪的行为

时间:2016-06-06 16:11:23

标签: r date posix

我对as.POSIXct()有疑问。我需要处理大量数据,以便最大限度地减少用于更改日期的内存origin。所以,我用:

as.integer(as.POSIXct("2015-05-15 00:00:01",origin=("2015-05-15 00:00:00")))

并且当我认为我应该得到1431637201时。问题是如何处理起源?

1 个答案:

答案 0 :(得分:3)

origin参数不适合此purprose。

尝试

as.integer(as.POSIXct("2015-05-15 00:00:01") - as.POSIXct("2015-05-15 00:00:00"))
#[1] 1

as.integer(difftime("2015-05-15 00:00:01", "2015-05-15 00:00:00"))

origin参数用于将数字转换为日期/日期时间对象。该数字表示自"纪元"以来经过的时间单位(以秒为单位)。 R中POSIX *类的标准时期是" 1970-01-01"。其他系统使用其他默认来源。当使用代表来自其他系统(如SAS或Excel)的日期/时间对象的数字时,"来源"需要改变"通常" " 1970-01-01"并根据提供数字的来源定义进行调整,以便在R中重现正确的日期/时间。

"起源"如果提供日期而不是数字作为第一个参数,则忽略选项。

OP中显示的示例中获得的数字取决于时区,在这种情况下可以像这样重现:

as.POSIXct(1431637201, origin="1970-01-01", tz="CEST-3")
#[1] "2015-05-15 00:00:01 CEST"

有关使用?as.POSIXct的更多信息和示例,请参阅?base::as.Dateorigin