Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access zoo or xts index

Tags:

I am using zoo objects, buy my question also applies to xts objects. It looks to me like it is a one column vector with an index. In my case the index is the vector of dates and the one column vector my data. All is good except that I would like to access the dates (from the index).

For example I have the following result:

ObjZoo <- structure(c(10, 20), .Dim = c(2L, 1L), index = c(14788, 14789),                     class = "zoo", .Dimnames = list(NULL, "Data")) unclass(ObjZoo) #      Data # [1,]   10 # [2,]   20 # attr(,"index") # [1] 14788 14789 

I want to get 14789 in a variable or a vector, but I'm not sure how to access it.

like image 586
feschet Avatar asked Jun 24 '11 08:06

feschet


People also ask

What is an XTS object in R?

xts objects are simple. Think of them as a matrix of observations combined with an index of corresponding dates and times. xts = matrix + times. The main xts constructor takes a number of arguments, but the two most important are x for the data and order.by for the index. x must be a vector or matrix.

What is zoo object R?

zoo is an R package providing an S3 class with methods for indexed totally ordered observations, such as discrete irregular time series. Its key design goals are independence of a particular index/time/date class and consistency with base R and the "ts" class for regular time series.


2 Answers

From the help for ?zoo, there are two convenience methods to access the data in zoo objects:

  • coredata() returns the data in the zoo object
  • index() returns the index

For example:

x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1 x <- zoo(rnorm(5), x.Date)  index(x) [1] "2003-02-01" "2003-02-03" "2003-02-07" "2003-02-09" "2003-02-14"  coredata(x) [1] -1.2487943  0.8911630  1.2713133 -0.1024638  0.2989194 
like image 139
Andrie Avatar answered Sep 22 '22 19:09

Andrie


In general when you see attr, this means that this data is an attribute of an object.

attributes function can be used to dump all attributes as a list, so you can access certain element with $:

attributes(ObjZoo)$index 

attr gives you direct access to the attribute by its name:

attr(ObjZoo,"index") 

In fact this is what index does:

> zoo:::index.zoo  function (x, ...)  {     attr(x, "index") } <environment: namespace:zoo> 
like image 45
mbq Avatar answered Sep 22 '22 19:09

mbq