An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20130623/62918de4/attachment.pl>
cut range from time objects
2 messages · Dominykas Grigonis, G See
Hi Dominykas I would try the below as my first attempt. library(xts) library(timeSeries) Sys.setenv(TZ="GMT") temp <- xts(1:84, timeCalendar(m=1, d=rep(1:7,each=12),h = seq(0,23,2))) # Monday through Thursday mt <- temp[.indexwday(temp) %in% 1:4] # Friday 00:00:00/20:00:00 f <- temp[.indexwday(temp) == 5L]["T00:00:00/T20:00:00"] # Sunday 20:00:00/24:00:00 s <- temp[.indexwday(temp) == 0L]["T20:00:00.000/T23:59:59.999"] out <- rbind(mt, f, s) # check answer by adding a column with weekday (0-6 starting on Sunday) colnames(out) <- "temp" # have to have a column name to do the next step out$wday <- .indexwday(out) # Now you can look at the output and see that the only times where wday is 0 # are 20:00 or later, and the only times where wday is 5 are 20:00 or earlier out Hope this helps, Garrett On Sun, Jun 23, 2013 at 10:02 AM, Dominykas Grigonis
<dominykasgrigonis at gmail.com> wrote:
Dear all,
I have come across the issue and I hope you will be able to help me.
I have minute data and unfortunately it has weekends in it and unfortunately the values on weekend are not 0s and not NAs, but rather last trading price of friday. I want to cut the ranges out as it slows down strategy testing.
Say we have xts object with timeDate index
temp <- xts(1:84, timeCalendar(m=1, d=rep(1:7,each=12),h = seq(0,23,2)))
I want to cut rows from friday 20:00 to sunday 20:00.
I started writing function, but it just does not seem right?
filtertime <- function(x, rwd <- "5/2", rt <- "0800/1400"){
is.within <- function(x){
value <- hour(x)*60+minute(x)
(value > range[1] && value < range[2])}
rwd <- as.numeric(strsplit(rwd,"/")[[1]])
rt <- as.numeric(strsplit(rt,"/")[[1]])
rt <- (rt%/%100)*60+(rt%%100)
time <- index(x)
if(rwd[1]>rwd[2]){ wsq <- c((rwd[1]:7), (1:rwd[2]))
}else{wsq <- rwd[1]:rwd[2]}
wweek <- sapply(time, function(x){x[all(dayOfWeek(x) != wsq)]})
wweek <- x[all(dayOfWeek(x) != wsq)]
}
I am not looking for help on this function, I hope someone could suggest some efficient way to solve my problem as I am working on 1 year 1minute data.
Thank you in advance.
Kind regards,--
Dominykas Grigonis
[[alternative HTML version deleted]]
_______________________________________________ R-SIG-Finance at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.