2012-05-13 7 views
3

私は以下を持っていますxtsオブジェクトはindexClass "Date"です。 index(data)は私に "POSIXct"オブジェクトを与えます。私はindex(Data)が "Date"オブジェクトを返すと考えました。R:index()が目的のクラスを返すことができません

index()から「日付」オブジェクトを取得するにはどうすればよいですか?

str(data) 
An ‘xts’ object from 2007-01-15 to 2012-04-27 containing: 
    Data: num [1:1282, 1:5] 1881 2003 2064 2026 2098 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:5] "open" "high" "low" "close" ... 
    Indexed by objects of class: [Date] TZ: GMT 
    xts Attributes: 
List of 2 
$ tclass: chr "Date" 
$ tzone : chr "GMT" 

indexClass(data) 
"Date" 

str(index(data)) 
Class 'POSIXct' atomic [1:1282] 1.17e+09 1.17e+09 1.17e+09 1.17e+09 1.17e+09 ... 
    ..- attr(*, "tzone")= chr "GMT" 
    ..- attr(*, "tclass")= chr "Date" 
+1

私の答えは以下の通りです:How diあなたはあなたのデータを作成しますか?私はそれが日付であるときにxtsインデックスにタイムゾーンを追加する方法を考えることができません。 (私はindexDate(x)がタイムゾーンのないDateオブジェクトを提供するのだろうかと疑問に思っていますが、問題を再現できないため、これをテストできません) –

+0

xtsを作成するときにTZ変数がtzone属性にストロークされていると思いますオブジェクト。 tzone属性を必要としない場合は、どのように削除するのですか? – user1589

+0

明示的にtzoneを設定しても違いがないことを示すために私の答えを編集しました。あなたの質問を編集して、問題のあるデータをどのように作成するのかを見せてください。最小限に抑えてくださいが、問題を再現できるほど十分に完成しているはずです。 –

答えて

1

クイックアンサー:日付にはタイムゾーンがありません。だから、私はタイムゾーン情報を保存するためにPOSIXctにDateをラップする必要があります。ここで

は、それはあなたが期待する行動を示しタイムゾーン、なしの例です。

x=xts(1:10, seq.Date(as.Date('2012-01-01'),by=1,length.out=10)) 
indexClass(x) 
# [1] "Date" 
index(x) 
# "2012-01-01" "2012-01-02" "2012-01-03" "2012-01-04" "2012-01-05" "2012-01-06" "2012-01-07" "2012-01-08" "2012-01-09" "2012-01-10" 
str(index(x)) 
# Date[1:10], format: "2012-01-01" "2012-01-02" "2012-01-03" "2012-01-04" "2012-01-05" "2012-01-06" "2012-01-07" "2012-01-08" "2012-01-09" "2012-01-10" 

がUPDATE:XTSオブジェクトにTZONE属性を追加すると、何も変更しません:

x=xts(1:10, seq.Date(as.Date('2012-01-01'),by=1,length.out=10), tzone="GMT") 
str(index(x)) 
# Date[1:10], format: "2012-01-01" "2012-01-02" "2012-01-03" "2012-01-04" "2012-01-05" "2012-01-06" "2012-01-07" "2012-01-08" "2012-01-09" "2012-01-10" 

これがされあなたと同じ出力を与えるstr(x)にもかかわらず:

An ‘xts’ object from 2012-01-01 to 2012-01-10 containing: 
    Data: int [1:10, 1] 1 2 3 4 5 6 7 8 9 10 
    Indexed by objects of class: [Date] TZ: GMT 
    xts Attributes: 
List of 2 
$ tclass: chr "Date" 
$ tzone : chr "GMT"