如何使用R从MATLAB序列日期数中提取时间?

6

我有一些MATLAB的序列日期数需要在R中使用,但我必须将它们转换为普通日期。

    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"

它只提供日期,但我也需要时间。有任何想法?

请查看此链接:http://lukemiller.org/index.php/2011/02/converting-matlab-and-r-date-and-time-values/ - akrun
1个回答

9
这个技巧是Matlab使用了一个虚构的参考日期"January 01, 0000" 来计算其日期编号。而R中"POSIXct"类的时间起点是‘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"

在Matlab的datenum中,719529代表的是“1970年1月1日00:00.00 UTC”,而86400则代表了标准UTC一天的秒数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接