2017-01-18 4 views
2

サンプル:MatlabをRの時刻に変換するには?私のデータの

> 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> 

私はこれで、通常の日付にそれらのMathWorks社の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倍であります変換されませんか?

+0

'testidata'を' test_data'にする必要がありますか? – rosscova

+0

おっと、はい、ありがとうございます。今すぐ使える – praseodyymi

+0

このコードをもっと簡単にすることができるはずです。として。 POSIXctはベクトル化されているため、一度に1つの要素にデータを渡す必要はありません –

答えて

4

私はあなたの問題が誤植かもしれないと思っていますが、これはforループを取り除くことでもう少し簡単に行うことができます。

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

これは、大きなデータセットの方がはるかに高速でなければなりません。

関連する問題