これはバグであるか、少なくとも文書化する必要のある制限であることに同意します。k
「月」の場合は、k = 1、2、3、4、および6でのみ機能します。
回避策を見つけて、私の最初のアイデアは次のとおりでした。
library(xts)
x <- xts(1:10000, order.by=seq(from=as.Date("1970-01-01"), by=1, len=10000))
index(x)[endpoints(x, on="months", k=6)[c(T,F)]]
与える:
"1970-12-31" "1971-12-31" "1972-12-31"... "1995-12-31" "1996-12-31"
しかし、別のデータセットを使用すると壊れます。
x <- xts(1:10000, order.by=seq(from=as.Date("1970-07-01"), by=1, len=10000))
これは次のようになります。
"1971-06-30" "1972-06-30" "1973-06-30" ...
安定した答えは次のとおりです。
dates <- index(x)[endpoints(x, on="months", k=6)]
dates[ as.POSIXlt(dates)$mon==11 ]
(英語:各半年の最終日を取得し、12月のもののみを保持します。)
別の方法は、を使用してendpoints(x, on="years")
、気に入らない場合は最後の日付を削除することです。
今年の「最終取引日」または「最終サンプル日」が必要だと思いますので、実際には毎年12月31日になることはありません。ただし、毎年特定の日付が必要な場合は、次のようにします。
index(x)[.indexmon(x)==11 & .indexmday(x)==31]