[R] differing behaviour between xts (0.6-7) and zoo (1.5-8)
Murali.MENON at fortisinvestments.com
Murali.MENON at fortisinvestments.com
Fri Sep 25 11:09:38 CEST 2009
Folks,
I have some weekly dataseries that I convert to monthly xts (with
yearmon indices), and obtain the two following extracts:
> str(sig)
An 'xts' object from Apr 1998 to Sep 1998 containing:
Data: num [1:6, 1] 0.0083 0.2799 -0.2524 -0.0119 0.18 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr "e1"
Indexed by objects of class: [yearmon] TZ: GMT
xts Attributes:
NULL
> str(ret)
An 'xts' object from Mar 1998 to Aug 1998 containing:
Data: num [1:6, 1] -0.007829 0.006452 -0.000276 -0.000644 0.002572 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr "twi.Close"
Indexed by objects of class: [yearmon] TZ: GMT
xts Attributes:
NULL
I understand that mathematical objects on xts objects will be performed
only on the datapoints with common indices, in this case Apr 1998 to Aug
1998. So I do:
> sig * ret
Data:
numeric(0)
Index:
NULL
Which doesn't give me what I expect. However, if I do:
> as.zoo(sig) * as.zoo(ret)
e1
Apr 1998 5.351189e-05
May 1998 -7.716467e-05
Jun 1998 1.624531e-04
Jul 1998 -3.055679e-05
Aug 1998 4.122321e-04
Which is as I expect.
I took a look at the structure of the two objects:
> dput(sig)
structure(c(0.00829354917358671, 0.279914830605598, -0.252440486192738,
-0.0118822201758384, 0.179972233000564, -0.209066714293924), index =
c(891388800,
893980800, 896659200, 899251200, 901929600, 904608000), .Dim = c(6L,
1L), .Dimnames = list(NULL, "e1"), class = c("xts", "zoo"), .indexTZ =
structure("GMT", .Names = "TZ"), .indexCLASS = "yearmon")
> dput(ret)
structure(c(-0.00782945094736132, 0.00645222996118644,
-0.000275671952124412,
-0.000643530245146628, 0.00257163991836062, 0.00229053194651918
), index = c(890784000, 893808000, 896227200, 898646400, 901670400,
904089600), .Dim = c(6L, 1L), .Dimnames = list(NULL, "twi.Close"),
.indexCLASS = "yearmon", .indexTZ = structure("GMT", .Names = "TZ"),
class = c("xts",
"zoo"))
So clearly the internal values of the supposedly overlapping parts of
the indices are different, although they are both 'yearmon' and seem to
represent the same months.
If I do
> dput(as.zoo(ret))
structure(c(-0.00782945094736132, 0.00645222996118644,
-0.000275671952124412,
-0.000643530245146628, 0.00257163991836062, 0.00229053194651918
), .Dim = c(6L, 1L), .Dimnames = list(NULL, "twi.Close"), index =
structure(c(1998.16666666667,
1998.25, 1998.33333333333, 1998.41666666667, 1998.5, 1998.58333333333
), class = "yearmon"), class = "zoo")
> dput(as.zoo(sig))
structure(c(0.00829354917358671, 0.279914830605598, -0.252440486192738,
-0.0118822201758384, 0.179972233000564, -0.209066714293924), .Dim =
c(6L,
1L), .Dimnames = list(NULL, "e1"), index = structure(c(1998.25,
1998.33333333333, 1998.41666666667, 1998.5, 1998.58333333333,
1998.66666666667), class = "yearmon"), class = "zoo")
Now the indices have the expected overlaps.
I'm not sure if this is a bug in xts?
> sessionInfo()
R version 2.9.2 (2009-08-24)
i386-pc-mingw32
locale:
LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United
Kingdom.1252;LC_MONETARY=English_United
Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices datasets tcltk utils methods
base
other attached packages:
[1] xts_0.6-7 zoo_1.5-8 svSocket_0.9-43 svMisc_0.9-48
TinnR_1.0.3 R2HTML_1.59-1 Hmisc_3.6-1 rcom_2.2-1
rscproxy_1.3-1
loaded via a namespace (and not attached):
[1] cluster_1.12.0 grid_2.9.2 lattice_0.17-25 tools_2.9.2
Please advise.
Thanks,
Murali
More information about the R-help
mailing list