2

私はこれを数日間理解しようとしてきました.Rで単純な日付列変換を行うのに苦労しているようです.

to.period コマンドを使用するには、日付と時刻をフォーマットする必要があります。mydata$Time 列をフォーマットし、シリーズ全体を 4 時間 OHLC バーに変換したいと思います。

以下はコード入力です。

> mydata = read.csv("AUDJPY.csv")
> colnames(mydata) <- c("Pair","Time","Bid","Ask")
> head(mydata)
     Pair                  Time    Bid    Ask
1 AUD/JPY 20140501 00:00:00.301 94.874 94.893
2 AUD/JPY 20140501 00:00:00.312 94.876 94.895
3 AUD/JPY 20140501 00:00:00.316 94.876 94.882
4 AUD/JPY 20140501 00:00:00.317 94.877 94.884
5 AUD/JPY 20140501 00:00:00.403 94.877 94.885
6 AUD/JPY 20140501 00:00:00.420 94.877 94.887
> mydata$Time <- strptime(as.character(mydata$Time),"%Y%m%d_%H:%M:%S.%f")
> head(mydata)
     Pair Time    Bid    Ask
1 AUD/JPY <NA> 94.874 94.893
2 AUD/JPY <NA> 94.876 94.895
3 AUD/JPY <NA> 94.876 94.882
4 AUD/JPY <NA> 94.877 94.884
5 AUD/JPY <NA> 94.877 94.885
6 AUD/JPY <NA> 94.877 94.887
> class(mydata$Time)
[1] "POSIXlt" "POSIXt" 
> 

助けてください!

4

1 に答える 1

4

10 進数の秒については、「%S」ではなく「%OS」を使用します。後者は値をすべて無視します。また、フォーマットにスペースが含まれている場合は、フォーマット文字列にスペースを含めることができます。

観察

x<-c("20140501 00:00:00.301","20140501 00:00:00.420")

a<-strptime(x,"%Y%m%d %H:%M:%OS");
a
# [1] "2014-05-01 00:00:00 EDT" "2014-05-01 00:00:00 EDT"
a$sec
# [1] 0.301 0.420

日付クラスの値を表示するとき、R は既定で分数の既定値を表示しませんが、それらがオブジェクト自体に格納されていることがわかります。

于 2014-06-25T03:55:56.617 に答える