Создайте временные ряды в R, начиная с 1 октября 2009 года по 30 декабря 2009 года, не включая выходные и праздничные дни - PullRequest
1 голос
/ 20 марта 2020

Я пытаюсь создать временной ряд, используя функцию ts (). Мой набор данных содержит 63 значения с начальной датой 10-01-2019 и последней датой 12-31-2019. Этот набор данных пропускает выходные и праздничные дни. Я пытаюсь это:

ts(data, start = c(2019,10), end = c(2019, 12), frequency = 260) 

, так как есть 260 дней в году, не включая выходные, но это не работает. Я продолжаю получать временные ряды с неправильным количеством наблюдений (все равно должно быть 63 значения, верно?) Я не понимаю, как это настроить. Если бы кто-нибудь мог мне помочь, это было бы очень признательно.

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Вы можете использовать пакеты bizdays и timeDate следующим образом:

library(bizdays)
library(timeDate)

create.calendar(name='America/New_York', holidays = as.Date(holidayNYSE(2019)), weekdays = c('saturday', 'sunday'), start.date=as.Date('2019-01-01'), end.date = as.Date('2019-12-31'))

bizseq(as.Date('2019-10-01'), as.Date('2019-12-31'), 'America/New_York')
 [1] "2019-10-01" "2019-10-02" "2019-10-03" "2019-10-04" "2019-10-07" "2019-10-08" "2019-10-09"
 [8] "2019-10-10" "2019-10-11" "2019-10-14" "2019-10-15" "2019-10-16" "2019-10-17" "2019-10-18"
[15] "2019-10-21" "2019-10-22" "2019-10-23" "2019-10-24" "2019-10-25" "2019-10-28" "2019-10-29"
[22] "2019-10-30" "2019-10-31" "2019-11-01" "2019-11-04" "2019-11-05" "2019-11-06" "2019-11-07"
[29] "2019-11-08" "2019-11-11" "2019-11-12" "2019-11-13" "2019-11-14" "2019-11-15" "2019-11-18"
[36] "2019-11-19" "2019-11-20" "2019-11-21" "2019-11-22" "2019-11-25" "2019-11-26" "2019-11-27"
[43] "2019-11-29" "2019-12-02" "2019-12-03" "2019-12-04" "2019-12-05" "2019-12-06" "2019-12-09"
[50] "2019-12-10" "2019-12-11" "2019-12-12" "2019-12-13" "2019-12-16" "2019-12-17" "2019-12-18"
[57] "2019-12-19" "2019-12-20" "2019-12-23" "2019-12-24" "2019-12-26" "2019-12-27" "2019-12-30"
[64] "2019-12-31"

В этой последовательности 64 дня; Ваши 63 дня могут быть из-за различий в календаре праздников.

0 голосов
/ 20 марта 2020

ts обычно используется для ежемесячных, квартальных и годовых данных, а не для ежедневных данных. Если вы хотите сделать это в любом случае, вы можете использовать ts(data), который будет использовать индекс 1, 2 и т. Д. c. Использование data в примечании в конце:

ts(data)
## Time Series:
## Start = 1 
## End = 3 
## Frequency = 1 
## [1] 1 2 3

Если у вас есть Date вектор класса d той же длины, что и data, вы можете использовать zoo или xts и либо использовать это, либо преобразовать его в ts, используя as.ts следующим образом (где индекс - это количество дней с начала UNIX). Если вы хотите указать частоту, вы можете добавить аргумент частоты = к вызову зоопарка.

library(zoo)
z <- zoo(data, d)
z
## 2019-10-01 2019-10-03 2019-10-04 
##          1          2          3 

as.ts(z)
## Time Series:
## Start = 18170 
## End = 18173 
## Frequency = 1 
## [1]  1 NA  2  3

Примечание

data <- 1:3
d <- as.Date(c("2019-10-01", "2019-10-03", "2019-10-04"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...