从 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]))]
我在 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]))]