2014-07-01 110 views
2

我有一个数据框包含什么应该是一个已读入R的日期时间列。时间值显示为数值时间,如下面的数据示例中所示。我想将它们转换为datetime POSIXct或POSIXlt格式,以便查看日期和时间。R转换数字时间到日期时间POSIXct格式

tdat <- c(974424L, 974430L, 974436L, 974442L, 974448L, 974454L, 974460L, 974466L, 974472L, 
      974478L, 974484L, 974490L, 974496L, 974502L, 974508L, 974514L, 974520L, 974526L, 
      974532L,974538L) 

974424应该等同于00:00:00 01/03/2011,但不知道该数值的起源时间(即1970-01-01以下使用不工作)。我试图使用下面的命令来实现这一点,并花了一些时间试图让as.POXISct工作,但我还没有找到一个解决方案(即我最终得到NISA的POSIXct对象或结束了模糊的日期时间值)。

尝试数字时间转换为日期时间:

datetime <- as.POSIXct(strptime(time, format = "%d/%m/%Y %H:%M:%S")) 
datetime <- as.POSIXct(as.numeric(time), origin='1970-01-01') 

我相信,这是一个简单的事情。任何帮助都会得到很大的回应。谢谢!

+1

以小时,分钟或秒这些时间值?如果你不知道起源时间,你必须知道这一点,才能进行转换。 –

+0

@ Theodore:他们应该在几小时内。日期时间值应该如此运行00:00:00 01/03/2011,06:00:00 01/03/2011,12:00:00 01/03/2011,18:00:00 01/03/2011 ,02/03/2011的00:00:00等等(每隔6小时)。 – jjulip

回答

4

尝试这些取决于哪个时区您希望之一:

t.gmt <- as.POSIXct(3600 * (tdat - 974424), origin = '2011-03-01', tz = "GMT") 

t.local <- as.POSIXct(format(t.gmt)) 
+0

谢谢。日期时间值应该从00:00:00 01/03/2011以6小时为间隔运行,即06:00:00 01/03/2011,12:00:00 01/03/2011,18:00:00 01/03/2011,02/03/2011,00:00:00等。我将如何适应上面的代码来实现这一目标?目前它以分钟而不是小时为间隔:即“2011-01-03 00:00:00 GMT”“2011-01-03 00:00:06 GMT”“2011-01-03 00:00:12 GMT ”。谢谢! – jjulip

+1

@jjulip如果'tdat'在6小时内,那么在第一行中''tday-974424'乘以'60 * 6'来转换为分钟。 –

+0

@jjulip,请参阅修订后的答案。 –