【问题标题】:How to convert Matlab time to date in R? [closed]如何在 R 中将 Matlab 时间转换为日期? [关闭]
【发布时间】:2017-01-18 09:42:01
【问题描述】:

我的数据样本:

 > test_data
      matlab.time            timedate
  1  736148.38577941596         <NA>
  2  736148.38647386897         <NA>
  3  736148.41911317594         <NA>
  4  736148.41980762896         <NA>
  5  736148.42119653604         <NA>

我尝试将这些 matlab 时间转换为正常日期:

  for (i in 1:length(testidata$timedate)) { 
   h <- as.POSIXct((test_data[i,1] - 719529)*86400, origin = "1970-01-01", tz = "UTC")
   test_data[i, 2] <- strftime(h)
  }

但结果是

     > test_data
      matlab.time            timedate
    1  736148.38577941596 2015-07-03 12:15:31
    2  736148.38647386897                <NA>
    3  736148.41911317594                <NA>
    4  736148.41980762896                <NA>
    5  736148.42119653604                <NA>

为什么所有的matlab时间都不会转换?

【问题讨论】:

  • 应该 testidatatest_data(在您的通话设置中)?
  • 哎呀,是的,谢谢。现在可以使用了
  • 您应该能够使这段代码更简单。作为。 POSIXct 是矢量化的 - 无需一次给数据一个元素

标签: r matlab datetime for-loop


【解决方案1】:

我认为你的问题可能是一个错字,但你可以通过摆脱 for 循环更简单地做到这一点。

test_data$timedate <- strftime(
    as.POSIXct( ( test_data$matlab.time - 719529) * 86400, 
                origin = "1970-01-01", 
                tz = "UTC")
)

对于更大的数据集,这也应该更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多