[R] Help make this simpler – count business day
cameron
raymond.fu at invesco.com
Tue Nov 9 17:49:48 CET 2010
Help make this simpler – count business day
I am a beginner in R and this is my first post
Want to count the day in month. For example
Day
2010-09-01 1 Wed
2010-09-02 2 Thurs
2010-09-03 3 Friday
2010-09-07 4 Tuesday
2010-09-08 5 Wed
2010-09-09 6 Thursday
2010-09-10 7 Friday
#-------------------------
library(tseries)
msft <- get.hist.quote(instrument="MSFT", start="1986-03-31",
end="2008-09-10", quote=c("O","H","L","C","A","V"), provider="yahoo",
retclass="zoo")
# tail(msft)
# Open High Low Close AdjClose Volume
#2008-09-03 27.00 27.18 26.84 26.90 25.73 57127700
#2008-09-04 26.74 26.89 26.35 26.35 25.21 66141900
#2008-09-05 26.03 26.22 25.63 25.65 24.54 82305200
#2008-09-08 26.21 26.33 25.67 26.12 24.99 62110800
#2008-09-09 26.20 26.60 26.05 26.10 24.97 85735700
#2008-09-10 26.52 26.86 26.25 26.44 25.29 75064900
countday<-function(z)
{
z <- cbind(z,rep(0,times=nrow(z)))
rng <- range(time(z))
StartDate <- rng[1]
EndDate <- rng[2]
starty <- as.numeric(format(StartDate, "%Y"))
endy <- as.numeric(format(EndDate, "%Y"))
year <- starty
for (year in starty:endy){
for (month in 1:12){
rows <- which(as.numeric(format(time(z),"%m")) == month &
as.numeric(format(time(z),"%Y")) == year )
temp <- z[rows,]
n <- 1:nrow(temp)
z[rows,ncol(z)] <- n
}
}
colnames(z) <- c(colnames(z[,1:(ncol(z)-1)]),"Day")
return(z)
}
msft <- countday(msft)
>msft
# Open High Low Close AdjClose Volume Day
#2008-09-03 27.00 27.18 26.84 26.90 25.73 57127700 2
#2008-09-04 26.74 26.89 26.35 26.35 25.21 66141900 3
#2008-09-05 26.03 26.22 25.63 25.65 24.54 82305200 4
#2008-09-08 26.21 26.33 25.67 26.12 24.99 62110800 5
#2008-09-09 26.20 26.60 26.05 26.10 24.97 85735700 6
#2008-09-10 26.52 26.86 26.25 26.44 25.29 75064900 7
--
View this message in context: http://r.789695.n4.nabble.com/Help-make-this-simpler-count-business-day-tp3034621p3034621.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list