不包括xts中的小时和天数

时间:2015-03-08 02:10:22

标签: r subset xts weekday

我有一个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之间星期天

由于

1 个答案:

答案 0 :(得分:2)

这是我想到的第一件事;可能有更好的方法。

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