Я новичок во временных рядах в R, и мне трудно понять, как работает xts::to.period
. Вот минимальный пример:
library(xts)
library(lubridate)
data(sample_matrix)
rs <- as.xts(sample_matrix)
rs<- rs[seq(1, 90, 13), "Open"]
rs
Все 4 варианта «indexAt» ниже дали одинаковый результат (т. Е. Последний элемент месяца), за исключением времени / без времени:
to.period(rs, period = "month", OHLC = F, indexAt = "firstof")
to.period(rs, period = "month", OHLC = F, indexAt = "startof")
to.period(rs, period = "month", OHLC = F, indexAt = "lastof")
to.period(rs, period = "month", OHLC = F, indexAt = "endof")
I ожидал 4 разных вывода ...
Ожидаемый вывод для "firstof" (т.е. первый элемент с датой, как в данных):
rs[xts:::startof(rs, "month", k=1)]
Ожидаемый вывод для "startof" (т.е. первый элемент с первой датой периода):
tmp <- rs[xts:::startof(rs, "month", k=1)]
index(tmp) <- c(ymd(20070101), ymd(20070201), ymd(20070301))
print(tmp)
Ожидаемый результат для "lastof" (т.е. последний элемент с датой, как в данных):
rs[xts::endpoints(rs, on = "month", k=1)]
Ожидаемый результат для "endof" (т.е. последний элемент с последней датой периода):
tmp2 <- rs[xts::endpoints(rs, "month", k=1)]
index(tmp2) <- c(ymd(20070131), ymd(20070228), ymd(20070331))
print(tmp2)
Может кто-нибудь помочь мне понять, почему я не получаю ожидаемые результаты? Было бы здорово, если бы было несколько примеров того, как вариантные значения indexAt будут давать разные выходные данные. Спасибо!