tags:

views:

104

answers:

2

I have an XTS timeseries in R of the following format and am trying to do some processing, subsetting and re-arranging before exporting as a CSV for work in another program.

head(master_1)
                   S_1
2010-03-03 00:00:00 2.8520
2010-03-03 00:30:00 2.6945
2010-03-03 01:00:00 2.5685
2010-03-03 01:30:00 2.3800
2010-03-03 02:00:00 2.2225
2010-03-03 02:30:00 2.0650

and

str(master_1)
An ‘xts’ object from 2010-03-03 to 2010-05-25 08:30:00 containing:
  Data: num [1:4000, 1] 2.85 2.69 2.57 2.38 2.22 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "S_1"
  Indexed by objects of class: [POSIXt,POSIXct] TZ: 
  Original class: 'zoo'  
  xts Attributes:  
List of 1
 $ dateFormat: chr "Date"

And I would like to convert this to a data.frame so I can manipulate it more easily and then export to another program. However, when I use test1 <- as.data.frame(master_1) the test1 does have the Index (i.e. the dates and times) visible,

head(test1)
                       S_1
2010-03-03 00:00:00 2.8520
2010-03-03 00:30:00 2.6945
2010-03-03 01:00:00 2.5685
2010-03-03 01:30:00 2.3800
2010-03-03 02:00:00 2.2225
2010-03-03 02:30:00 2.0650 

But the Index is not shown,

str(test1)
'data.frame': 4000 obs. of  1 variable:
 $ S_1: num  2.85 2.69 2.57 2.38 2.22 ...

And writing a csv write.csv(master_1, file="master_1.csv") does not include the time or date. Why is this, and how can I include the data/time data as a column, so it is used in other R commands and exported properly?

Thanks for any help.

+2  A: 

That's because the dates are rownames in your data.frame. You need to make them a separate column.

Try this:

 data.frame(date=index(master_1), coredata(master_1))
Shane
This is correct. To answer the second question: `write.csv` does not include the index because the index is an xts *attribute*, not a rowname. Use `write.zoo` instead.
Joshua Ulrich
Thanks Shane and Joshua, that helps me see where I have been going wrong.
phrozenpenguin
A: 

Hi phrozenpenguin,

Shane is right. you might be looking for index(your xts). Here's a reproducible example.

library(xts)
example(xts)
x = head(sample.xts)
datefield = index(x)
newdf = data.frame(x,datefield)

Then you should be able to simply export it to a csv. Of course you can rename the rows, too.

ran2
eh, thanks Joshua so it's NOT a rowname :)
ran2
Thanks ran2 for the example. I can also use rownames(x) if x is not an XTS object.
phrozenpenguin