r - 如何使用 R 从 MATLAB 序列号中提取时间?

标签 r matlab

我有一些需要在 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"

它只提供日期但我还需要时间?任何想法

最佳答案

技巧是 Matlab 使用虚构的引用日期“0000 年 1 月 1 日”来计算其日期编号。 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"

其中 719529 在 Matlab 的 datenum 中是“1970-01-01 00:00.00 UTC”,86400标准 UTC 日的秒数。

关于r - 如何使用 R 从 MATLAB 序列号中提取时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30072063/

相关文章:

r - 基于至少一个共同值对 Id 进行分组

r - 获取一定长度的连续整数的运行并从第一个值中采样

r - 使用 R 中的 Chartseries 截断 Y 轴

matlab - 为手-前臂分割实现手腕裁剪程序(Matlab)

matlab - 在 MATLAB 中可视化高斯混合模型集群

将矩阵元素表示为向量的算法

r - 如何检查 R 函数的输入参数是否存在

r - 对于第二个数据帧中的每个元素,求两个数据帧之间的最小距离

matlab - 保持顺序和重复的独特功能的模拟 (MATLAB)

matlab - 为什么使用 switch 命令时他的函数不返回解决方案?