2014-10-30 221 views
1

我在将日期转换为“小时后”格式时出现问题,我不认为我需要应用某些更复杂的日期处理方法,但我可能错了,我希望有人可能知道一个好的解决方案?将数值日期转换为小时数,因为格式为

我拥有的数据是表格格式,我从文本文件中读入。 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 

的第一列是一年,第二个月,第三日。第四列的值是与我的研究相关的指标值。

数据I想匹配,因为该索引值是在一个稍微奇数格式,小时“1800年1月1日”

ftime <- c(1822548, 1822572, 1822596) 

FTIME可以被打印为只是一个日期,通过以下功能。

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

我的代码都采用数值在FTIME匹配的数据,但我似乎无法找出如何格式化新的数据(数据1)转换成相同的。

我有这样的感觉,它应该是一个简单的解决方案,但似乎无法得到它的工作。

总是非常感谢帮助!

+0

我不知道你是否遇到越来越在'date1'日期为一个字符串像'ftime'或困难另一种方式? – 2014-10-30 13:09:46

+0

我是在ftime格式的date1之后,抱歉不清楚! – Kate2808 2014-10-31 14:53:32

+0

提供的答案是你在找什么?如果可以,请您接受答案? – 2014-11-24 11:43:35

回答

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