自格式以来将数字日期转换为小时数

时间:2014-10-30 12:33:27

标签: r time

我在将日期转换为“小时以来”格式时遇到问题,我认为我不需要应用一些更复杂的日期操作方法,但我可能错了,我希望有人可能知道好的解决方案

我所拥有的数据采用表格格式,我从文本文件中读取。 5000多行数据的3行示例是;

date1 <- matrix(c(2007,2007,2007, 12,12,12,1,2,3,0.365,0.096,-0.416),nrow=3)

打印出来:

date1
      [,1] [,2] [,3] [,4]
[1,] 2007    12    1  0.365
[2,] 2007    12    2  0.096
[3,] 2007    12    3 -0.416

第一列是年份,第二列是月份,第三列是第一列。第4列中的值是与我的研究相关的指数值。

我希望与索引值匹配的数据是略微奇怪的格式,自“1800-01-01”后的小时数

ftime <- c(1822548, 1822572, 1822596)

ftime可以通过以下功能打印为日期。

as.Date(ftime/24,"1800-01-01")
[1] "2007-12-01" "2007-12-02" "2007-12-03"

我的代码都使用ftime中的数值来匹配数据,但我似乎无法弄清楚如何将新数据(data1)格式化为相同的数据。

我觉得它应该是一个简单的解决方案,但似乎无法让它发挥作用。

总是非常感谢帮助!

1 个答案:

答案 0 :(得分:1)

如果我得到你想要的东西,你可以使用difftime功能:

    #setting the origin
    myorigin<-as.Date("1800-01-01")
    #converting date1 to Date objects
    myDates<-as.Date(do.call(function(...) paste(...,sep="-"),as.data.frame(date1[,1:3])))
    #get the results
    difftime(myDates,myorigin,units="hour")
    #Time differences in hours
    #[1] 1822536 1822560 1822584