R Subset XTS будние дни - PullRequest
       3

R Subset XTS будние дни

14 голосов
/ 01 февраля 2012

Как поднастроить объект xts, чтобы он включал только рабочие дни (пн-пт, кроме субботы и воскресенья)?

Ответы [ 2 ]

16 голосов
/ 01 февраля 2012

Вот что я бы сделал:

library(xts)
data(sample_matrix)
sample.xts <- as.xts(sample_matrix, descr='my new xts object')
x <-  sample.xts['2007']  
x[!weekdays(index(x)) %in% c("Saturday", "Sunday")]

EDIT : Джошуа Ульрих в комментариях указывает на лучшее решение, использующее .indexwday(), одну из семейства встроенных функций доступа для извлечения фрагментов индекса из объектов класса xts. Также, как и решение Дирка Эддельбюттеля, следующее должно быть независимым от локали:

x[.indexwday(x) %in% 1:5]
8 голосов
/ 01 февраля 2012

Путем вычисления дня недели с учетом даты и поднабора. В этом примере я использую тип Date, но приведение к POSIXlt работает аналогично для POSIXct внутридневных отметок времени.

> mydates <- Sys.Date() + 0:6
> mydates
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-04" 
+   "2012-02-05" "2012-02-06"
> we <- sapply(mydates, function(d) { as.POSIXlt(d)$wday}) %in% c(0, 6)
> we
[1] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
> mydates[ ! we ]
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-06"
> 

Это действительно не вопрос xts, а базовая обработка дат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...