3

indexClass "Date" を持つ次のxtsオブジェクトがあります。index(data)「POSIXct」オブジェクトを提供します。index(Data)「Date」オブジェクトを返すと思いました。

から「Date」オブジェクトを取得するにはどうすればよい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"
4

1 に答える 1

1

簡単な答え: 日付にはタイムゾーンがありません。したがって、タイムゾーン情報を保持するために、日付を POSIXct でラップする必要があると思います。

これは、タイムゾーンのない例であり、期待される動作を示しています。

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"

更新: 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"
于 2012-05-13T06:40:09.107 に答える