Исключая часы и дни в xts

У меня есть объект xts с данными NA с 1.1.2007 по 5.6.2014 с минутными интервалами. Мне нужно исключить период с 17:00 пятницы до 17:00 воскресенья. Я знаю о таких трюках, как ['T17:00:00/T17:00:00'] для подмножества, но как вы работаете с условием дня недели, чтобы исключить из него диапазон? Итак, в этом,

dt.seq <- seq(c(ISOdate(2007,01,01)),c(ISOdate(2014,05,06)),by="min")
dt.NA <- xts(rep(NA,length(dt.seq)),dt.seq)

Я не хочу с пятницы на воскресенье с 17:00 до 17:00

Спасибо


person user3650690    schedule 08.03.2015    source источник


Ответы (1)


Вот первое, о чем я подумал; может быть лучший способ.

require(xts)
dt.seq <- seq(c(ISOdate(2007,01,01)),c(ISOdate(2014,05,06)),by="min")
dt.NA <- xts(rep(NA,length(dt.seq)),dt.seq)

wday <- .indexwday(dt.NA)       # weekday for each observation
hour <- .indexhour(dt.NA)       # hour for each observation
week.subset <-
  !((wday == 5 & hour >= 17) |  # Friday, after 17:00
    (wday == 6) |               # Saturday, all day
    (wday == 0 & hour < 17))    # Sunday, before 17:00

# Now subset your xts object
x <- dt.NA[week.subset,]
# Verify it only has the observations you want
table(.indexhour(x), .indexwday(x))
person Joshua Ulrich    schedule 08.03.2015