2011-02-01 45 views
7

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

转换转换似乎并不麻烦分数天到时钟小时,但我更喜欢使用预先存在的功能,如果可能的话。像R这样的东西存在吗?一套?

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

编辑 奇怪的是,在重新审视这个问题时,时间现在被读作POSIXct。不知道该怎么做。

+0

哈哈。这听起来像我阅读xls文件的经历。有一天,我写R代码从一个数字的Excel日期转换,然后一周后,我用一些新的数据编辑xls,当我在R中读取它时,日期是文本。您可能会在Excel中使用单元格格式来修复它。 – 2011-02-05 01:56:40

+0

如果您在Excel中将数据时间应用于cut-time格式,则text-csv文件中的值将遵循该格式。我建议'yyyy-mm-dd hh:mm:ss AM/PM'或'yyyy-mm-dd hh:mm:ss'。我没有配置RODBC,因此无法测试以确定这是否会影响数据库传输。 – 2015-01-09 20:36:13

回答

5

POSIXct值仅仅是因为午夜GMT 1970-01-01的秒数。 (所以你需要注意你与UTC的偏移量。)你可以使用日期部分并将天数乘以24 * 3600(as.Date(dtval)到你的时间值* 24 * 3600。Gabor指向文章在R新闻(他写道,谢谢你,Gabor。)

你没有给出一个字符串的例子,如果你将日期作为一个字符串,然后as.Date(strDate)将转换当它是“YYYY-MM-DD”或“YYYY/MM/DD”格式时,变量“strDate”到Date类。否则格式代码位于?strptime页面上

一旦你有一个POSIXct-这个例子今天增加了30分钟至今天2011年2月1日的午夜(在我的时区是UTC-5):

> 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" 
6

R News 4/1服务台文章有部分在R.

阅读Excel的日期
+0

p。 30,具体 – 2015-04-01 16:04:06

相关问题