2015-03-08 1 views
1

J'ai un objet xts avec des données NA du 1.1.2007 au 5.6.2014 avec des intervalles de minutes. Je dois exclure entre vendredi 17h00 et dimanche 17h00. Je suis au courant des astuces comme ['T17: 00: 00/T17: 00: 00'] pour le sous-ensemble, mais comment travaillez-vous la condition du jour de la semaine pour exclure une plage? Ainsi, dans ce domaine,Excluant les heures et les jours en 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) 

Je ne veux pas du vendredi au dimanche entre 17h00 à 17h00

Merci

Répondre

2

Voici la première chose que je pensais; il peut y avoir un meilleur moyen.

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))