从 xts timeserie 中高频删除没有变化的日子

Delete days with no variance from a xts timeserie in high frequency

我在 xts 中有一个时间序列,在几个月内 09:00 和 16:30 之间有五分钟的间隔。我需要删除价格差异为零的日子。尝试了以下方法,但它没有按预期工作,因为它在找到没有变化的一天后删除了所有内容。

我需要删除一整天的所有五分钟条目,方差为零。

days = unique(as.Date(time(tsEHO)))
novar = rep(NA,length(days))
i = 1
for( i in 1:length(days) ){
novar[i] = var(tsEHO[as.character(days[i])])==0
}

tsEHO = tsEHO[!novar]

head(tsEHO)
                       PRICE
2015-04-07 09:05:00 38.50000
2015-04-07 09:10:00 37.05000
2015-04-07 09:15:00 37.12000
2015-04-07 09:20:00 38.10606
2015-04-07 09:25:00 37.20000
2015-04-07 09:30:00 37.10000

有人吗?

我们可以试试:

dVar <- apply.daily(tsEHO, var)
tsEHO <- tsEHO[!as.Date(time(tsEHO)) %in% as.Date(time(dVar[dVar == 0]))]

模拟数据的一个小例子如下:

library(xts)
# simulating data:
startDate <- as.POSIXct(strptime("2015-04-07 09:05:00", "%Y-%m-%d %H:%M:%S"))
seqDate <- seq(startDate, length.out = 4000, by= 300)
myTs <- xts(exp(cumsum(rnorm(4000, sd=0.1))), seqDate)
myTs["2015-04-10"] <- 0
myTs["2015-04-14"] <- 0

# deleting days having variance 0:
dVar <- apply.daily(myTs, var)
myTs <- myTs[!as.Date(time(myTs)) %in% as.Date(time(dVar[dVar == 0]))]