#r #time-series #xts
#r #временные ряды #xts
Вопрос:
Я пытаюсь разделить данные временных рядов цен на нефть, охватывающие 35 лет в определенный год. Например, все данные до 2018 года в одну серию, а более поздние данные в другую. Могу ли я использовать split()
функцию для выполнения того же самого? Более подробная информация о временных рядах приведена ниже.
> str(myxts)
An ‘xts’ object on 1986-01-15/2020-09-15 containing:
Data: num [1:417, 1] 22.9 15.5 12.6 12.8 15.4 ...
Indexed by objects of class: [Date] TZ: UTC
xts Attributes:
Заранее спасибо.
Ответ №1:
Это создает объект xts с 2000/1/1 по 2002/9/26, а затем разбивает его на все до конца 2000 года и все, начиная с 2001 года.
tt <- seq(as.Date("2000-01-01"), by = "day", length = 1000)
x <- xts(seq_along(tt), tt)
range(time(x))
## [1] "2000-01-01" "2002-09-26"
s <- split(x, as.yearmon(time(x)) >= 2001)
range(time(s[[1]]))
## [1] "2000-01-01" "2000-12-31"
range(time(s[[2]]))
## [1] "2001-01-01" "2002-09-26"
Комментарии:
1. Результатом функции разделения был список объектов зоопарка, которые я должен был преобразовать обратно в xts. Тем не менее, это сработало для меня. Спасибо!!
2. В вопросе не был указан вывод, кроме того, что он должен состоять из двух рядов.
lapply(s, as.xts)
преобразовал бы каждую серию в xts.