[R] Split xts data set into weeks
R. Michael Weylandt
michael.weylandt at gmail.com
Sun Feb 3 12:37:34 CET 2013
On Sun, Feb 3, 2013 at 6:57 AM, Seimizu Joukan <saimizi at gmail.com> wrote:
> Would you please paste the following codes to R console and make a confirmation?
>
Indeed, well done and much appreciated.
> #Codes start from here
>
> library("quantmod")
> tmp<-structure(c(112.34, 112.89, 112.75, 113.5, 115.16, 115.21, 114.84,
> 114.93, 115.05, 114.46, 113.34, 113.71, 113.56, 115.08, 115.97,
> 115.26, 115.22, 115.24, 115.24, 114.98, 111.96, 112.75, 112.5,
> 113.1, 114.85, 114.55, 114.55, 114.75, 114.2, 112.92, 112.87,
> 112.8, 113.54, 115.05, 115.06, 114.85, 114.93, 115.09, 114.28,
> 113.92), class = c("xts", "zoo"), .indexCLASS = "Date", tclass =
> "Date", .indexTZ = "", tzone = "", index = structure(c(1298818800,
> 1298905200, 1298991600, 1299078000, 1299164400, 1299423600, 1299510000,
> 1299596400, 1299682800, 1299769200), tzone = "", tclass = "Date"),
> .Dim = c(10L,
> 4L), .Dimnames = list(NULL, c("Open", "High", "Low", "Close")))
> class(tmp)
> (res1<-split(tmp,f="weeks"))
> (res2<-split(tmp,frequency="weeks"))
Looking at args(split.xts) I think you actually do want split(..., f =
) here, not split(..., frequency = ), which would ignore and default
to months.
I get the following for res1, running R-Devel on OS X 10.6.8:
> res1
[[1]]
Open High Low Close
2011-02-27 112.34 113.34 111.96 112.87
[[2]]
Open High Low Close
2011-02-28 112.89 113.71 112.75 112.80
2011-03-01 112.75 113.56 112.50 113.54
2011-03-02 113.50 115.08 113.10 115.05
2011-03-03 115.16 115.97 114.85 115.06
2011-03-06 115.21 115.26 114.55 114.85
[[3]]
Open High Low Close
2011-03-07 114.84 115.22 114.55 114.93
2011-03-08 114.93 115.24 114.75 115.09
2011-03-09 115.05 115.24 114.20 114.28
2011-03-10 114.46 114.98 112.92 113.92
so I think it's likely a timezone issue. Try setting
indexTZ(tmp) <- "GMT"
or something similar and giving it another shot.
You might also want to move to the R-SIG-Finance class where the
authors of xts are more frequently seen.
It might also help to report Sys.timezone() in addition to your
specific linux distro.
Cheers,
MW
More information about the R-help
mailing list