Alternatively, xts has a convenience function for this .indexwday(SPY) will give weekdays as numbers with Sunday being 0 and Saturday being 6.
There are also several similar functions .indexDate(x) .indexday(x) .indexmday(x) .indexwday(x) .indexweek(x) .indexmon(x) .indexyday(x) .indexyear(x) .indexhour(x) .indexmin(x) .indexsec(x) Regards, Garrett On Wed, Aug 1, 2012 at 6:04 PM, R. Michael Weylandt <michael.weyla...@gmail.com> wrote: > On Wed, Aug 1, 2012 at 12:54 PM, Douglas Karabasz > <doug...@sigmamonster.com> wrote: >> I used quantmod to pull in price data from the ticker SPY. The data has >> date and closing price. I would like to show the day of the week for each >> closing price. Is that possible? Also, I would like to add the back into >> the data frame in a new column without changing the structure of the data >> set if possible. >> >> >> >> SPY >> >> 2009-01-02 92.96 >> >> 2009-01-05 92.85 >> >> 2009-01-06 93.47 >> >> 2009-01-07 90.67 >> >> 2009-01-08 91.04 >> >> 2009-01-09 89.09 >> >> >> >>> str(SP500) >> >> An 'xts' object from 2009-01-02 to 2012-07-31 containing: >> >> Data: num [1:902, 1] 93 92.8 93.5 90.7 91 ... >> >> - attr(*, "dimnames")=List of 2 >> >> ..$ : NULL >> >> ..$ : chr "SPY" >> >> Indexed by objects of class: [Date] TZ: >> >> xts Attributes: >> >> List of 4 >> >> $ tclass : chr [1:2] "POSIXct" "POSIXt" >> >> $ tzone : chr "" >> >> $ src : chr "yahoo" >> >> $ updated: POSIXct[1:1], format: "2012-07-31 17:59:16" >> > > Hi Doug, > > No, this isn't quite doable. I'll give a somewhat technical > description of why and then I'll propose a work around > > ---- Technical Stuff --- > > An "xts" object consists of two fundamental parts -- an index which is > numeric (seconds since the epoch usually) and its "coredata" which is, > in your case, the prices. The "coredata" is and must be all of the > same "type" -- either integer, double, or string; internally, this is > because it's all actually a matrix, which is in turn an atomic vector, > and to be any sort of performant, we need them all of the same type. > So there's no way for the coredata to have the _number_ 24 and the > _string_ day of the week "tuesday". We'll come back to this though. > > So you might ask about the index... xts hard-codes selected index > classes to work. None of them currently have printing methods that > write out the day of the week like you want, though you could define > your own time index and use it in zoo if desired. That's almost > certainly overkill though. > > ---- What to do ---- > > In light of the above, the easiest thing is probably to encode the day > of the week as an integer if you really need it for calculations: > > as.numeric(factor(strptime(index(x), "%A"))) > > will create that and then you can cbind() it on. > > Alternatively, you can cbind() just strptime(index(... on and you will > change the coredata() to character. I'd do this instead if you're only > looking for human output. Even better on the "just look" pretty front > would be to make it into a data.frame for printing only: > > data.frame(x, `Day of the Week` = strptime(index(x), "%A")) > > but again -- that's only for printing: it will destroy the "xts"-ness. > > Best, > Michael > >> >> >> Thank you, >> >> Douglas >> >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.