我有一些我需要在R中使用的MATLAB序列号,但是我要将它们转换为正常日期。
Matlab:
datestr(733038.6)
ans =
27-Dec-2006 14:24:00
你可以看到它给出日期和时间。
Now we try in R:
Matlab2Rdate <- function(val) as.Date(val - 1, origin = '0000-01-01')
> Matlab2Rdate(733038.6)
[1] "2006-12-27"
它只提供日期但我还需要时间吗?任何想法
答案 0 :(得分:7)
技巧是Matlab使用&#34; 1月01日,0000&#34;,一个虚构的参考日期,来计算其日期编号。 &#34; POSIXct&#34;的时间起源R中的类是'1970-01-01 00:00.00 UTC'。您可以阅读有关不同系统如何处理日期here的信息。
在转换之前,您需要考虑从一种格式到另一种格式的参考差异。 POSIX手册包含这样的示例。这是我的输出:
> val<-733038.6
> as.POSIXct((val - 719529)*86400, origin = "1970-01-01", tz = "UTC")
[1] "2006-12-27 14:23:59 UTC"
其中719529在Matlab的datenum中是'1970-01-01 00:00.00 UTC',在标准UTC日是86400的秒数。