2011-03-10 70 views
1

我走进藏数百个ASCII数据文件,其中的日期和时间是分开列像这样的:日期转换查询

date  time 
1-Jan-08 23:05 

我需要将其转换为可用的[R Date对象,减去8小时(从UTC到太平洋的时区转换),然后将其转换为unix时间。我需要这样做,因为数据是每晚收集的(从下午5点到次日早上2点)。因此,如果我使用常规的日期/时间格式,它会混淆日子(第1天跨越两天,实际上它只是数据收集的一个晚上)。我想分开考虑每一天的事件。

使用unixtime将允许我计算每天发生的事件的时间差异(除了unix时间,我可能会保留一个日期字段)。有人可以建议一个有效的方法来做到这一点?

下面是一些数据使用(这是在UTC)

dummy=data.frame(date="1-Jan-08",time="23:05") 

回答

4

在一起粘贴(工作向量化),然后分析,例如

datetime <- paste(dummy$date, dummy$time) 
    parsed <- strptime(datetime, "%d-%b-%y %H:%M") 

您也可以将其指定为数据框中的列。

编辑:strptime()有一个可选的tz=""参数,您可以使用。

+0

日期仍然是UTC。当我减去小时,它会自动分配一个不正确的时区。我怎样才能告诉它它是UTC开始的,并且在将它转换为unix时间戳之前需要转换为PST? – Maiasaura 2011-03-10 20:43:38

+0

加tz =“GMT”,然后做减法 - 如果没有指定,strptime将使用系统使用的tz,我总是发现这样做最简单 – mdsumner 2011-03-10 21:14:31

+0

得到了这部分。在时区转换方面,我可以做parsed = parsed - 5 * 60 * 60(中央时间减去5小时)?我忽略了其他时区转换错误吗?是否有更直接的方式从GMT转到CDT或PST? – Maiasaura 2011-03-10 21:50:58