本文介绍了使用seq()创建规则的日期时间序列(POSIXct)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的目标是创建一个给定起点,终点和增量(15分钟,1小时,1天)的POSIXct时间戳向量.我希望可以为此使用 seq
,但是在数字和POSIXct表示之间进行转换时遇到问题:
My goal is to create a vector of POSIXct time stamps given a start, an end and a delta (15min, 1hour, 1day). I hoped I could use seq
for this, but I have a problem converting between the numeric and POSIXct representation:
now <- Sys.time()
now
# [1] "2012-01-19 10:30:39 CET"
as.POSIXct(as.double(now), origin="1970-01-01", tz="CET")
# [1] "2012-01-19 09:30:39 CET"
as.POSIXct(as.double(now), origin=as.POSIXct("1970-01-01", tz="CET"), tz="CET")
# [1] "2012-01-19 09:30:39 CET"
此转换过程中浪费了一个小时.我在做什么错了?
One hour gets lost during this conversion. What am I doing wrong?
推荐答案
对于超类为"POSIXt"
的对象,有一个 seq()
方法"POSIXlt"
和"POSIXct"
类的集合.因此,您无需进行任何转换.
There is a seq()
method for objects of class "POSIXt"
which is the super class of the "POSIXlt"
and "POSIXct"
classes. As such you don't need to do any conversion.
> now <- Sys.time()
> tseq <- seq(from = now, length.out = 100, by = "mins")
> length(tseq)
[1] 100
> head(tseq)
[1] "2012-01-19 10:52:38 GMT" "2012-01-19 10:53:38 GMT"
[3] "2012-01-19 10:54:38 GMT" "2012-01-19 10:55:38 GMT"
[5] "2012-01-19 10:56:38 GMT" "2012-01-19 10:57:38 GMT"
这篇关于使用seq()创建规则的日期时间序列(POSIXct)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!