我有一个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之间星期天
由于
答案 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))