月の変化をテストするために使用できる変数を使用して、zooオブジェクトを拡張したいと思います。これを行うにはもっと一般的な方法があると確信しています。提案は素晴らしいと思いますが、この単純なアプローチが失敗する理由を理解したいと思います。私がここで欠けているものを理解したなら、私は気分が良くなるでしょう;-)
たとえば、動物園のオブジェクトの場合
library(zoo)
tz <- structure(c(7L, 7L, 1L, 6L, 0L, 9L, 0L, 1L, 6L, 0L, 3L, 3L, 5L,
0L, 8L, 2L, 0L, 3L, 2L, 5L, 2L, 3L, 4L, 7L, 8L, 9L, 0L, 1L, 4L,
5L, 6L, 7L, 8L, 2L, 3L, 4L, 5L, 8L, 9L, 0L), .Dim = c(20L, 2L
), .Dimnames = list(NULL, c("x", "y")), index = structure(c(13880,
13881, 13913, 13916, 13946, 13947, 13948, 13980, 13983, 13984,
13985, 14016, 14048, 14082, 14083, 14115, 14147, 14180, 14212,
14243), class = "Date"), class = "zoo")
as.yearmon()を使用して年/月変数を追加するのは簡単なようです。私がデータフレームにいる場合、これは細かい文字変数を生成しますが、動物園では、as.numeric()でラップするのを忘れると悲劇が起こります
tz$yrmo <- as.numeric(as.yearmon(index(tstz)))
> head(tz)
x y yrmo
2008-01-02 7 2 2008.000
2008-01-03 7 3 2008.000
2008-02-04 1 4 2008.083
2008-02-07 6 7 2008.083
2008-03-08 0 8 2008.167
2008-03-09 9 9 2008.167
これは見栄えがよく、データ要素をうまく比較できます
(tz $ x [6]!= tz $ y [6])
2008-03-09
FALSE
しかし、年/月の変数を比較すると、なぜこの結果が得られるのですか?
> (tz$yrmo[2] != tz$yrmo[1])
Data:
logical(0)
Index:
character(0)
そして、なぜ、yearmonまたはsidentity()を使用したデータ項目のテストがこのように失敗するのですか?(両方とも真である必要があります)
> identical(tz$yrmo[2] , tz$yrmo[1])
[1] FALSE
> identical(tz$x[2] , tz$x[1])
[1] FALSE
動物園でインデックスクラスを作成するyearmon()を使用して、火遊びをしているだけですか?Dirk Eddelbuettelの「日付を月番号に変える」のようなものに切り替える必要がありますか? 2つの日付の間の月数