在R中将一天的分数转换为POSIX时间

时间:2011-02-01 22:29:08

标签: excel datetime r

我有一个数据集,它将日期时间编码为两个单独的变量。通常情况下,我只是将它们粘贴在as.POSIXct内并继续进行。但是,日期以字符串形式提供,一天中的时间为24小时 - 例如,下午12点为0.5,上午9:30为0.1458333等。

将小数天转换为时钟小时似乎并不那么棘手,但如果可能的话,我更愿意使用预先存在的函数。基础R中是否存在类似的东西?包裹?

如果有任何用途,这是通过RODBC导入R的Excel(xlsx)时间字段。

EDIT 奇怪的是,在重新审视这个问题时,现在将时间读入POSIXct。不知道该怎么做。

2 个答案:

答案 0 :(得分:6)

R News 4/1帮助台文章有一节介绍如何阅读R中的Excel日期。

答案 1 :(得分:5)

POSIXct值只是格林威治标准时间1970-01-01午夜以来的秒数。 (所以你需要注意你与UTC的偏差。)你可以使用日期部分并将天数乘以24 * 3600(as.Date(dtval)到你的时间值* 24 * 3600.Gabor指向R News中的文章(他写道,谢谢你,Gabor。)

您没有给出字符串的示例。如果您将日期作为字符串获取,则as.Date(strDate)将以“YYYY-MM-DD”或“YYYY / MM / DD”格式将变量“strDate”转换为Date类。否则,格式代码位于?strptime页面上。

一旦你有一个POSIXct分类变量,你可以添加秒数。此示例在2011年2月1日午夜(在我的时区,即UTC-5)中添加30分钟到午夜:

> as.POSIXct(as.Date("2011-02-01")) +30*60
[1] "2011-01-31 19:30:00 EST"

这是你的时间价值加到午夜我的时间:

> as.POSIXct(as.Date("2011-02-01 00:00", tzone="UTC"))+3600*5 + 3600*24*timeval
[1] "2011-02-01 03:29:59 EST"