14

I have a Google stock data. It has two columns Date(Daily Data) and Close i.e. Google closing index.

Date    Close
10/11/2013  871.99
10/10/2013   868.24
10/9/2013    855.86
10/8/2013   853.67
10/7/2013   865.74
10/4/2013   872.35
10/3/2013   876.09
10/2/2013   887.99
10/1/2013   887
9/30/2013   875.91
9/27/2013   876.39
9/26/2013   878.17
9/25/2013   877.23
9/24/2013   886.84

and its in csv format and I read it through read.csv which return data frame object. When I tried to transform it into timeseries / ts() object, it returns unwanted numbers.

Please help me to convert data frame into ts() object.

Thanks in advance.

Ajay
  • 783
  • 3
  • 16
  • 37

2 Answers2

14

I suggest using xts instead of ts as it has lot of functions especially for financial time series. If your data is in data.frame DF then you can convert it to xts as follows

xts(DF$Close, as.Date(DF$Date, format='%m/%d/%Y')
CHP
  • 16,981
  • 4
  • 38
  • 57
7

Here's an approach using zoo from zoo package and then coercing the result to be ts

> library(zoo)
> ZOO <- zoo(df$Close, order.by=as.Date(as.character(df$Date), format='%m/%d/%Y'))
> ZOO
2013-09-24 2013-09-25 2013-09-26 2013-09-27 2013-09-30 2013-10-01 2013-10-02 2013-10-03 2013-10-04 
    886.84     877.23     878.17     876.39     875.91     887.00     887.99     876.09     872.35 
2013-10-07 2013-10-08 2013-10-09 2013-10-10 2013-10-11 
    865.74     853.67     855.86     868.24     871.99 
> ts(ZOO)  # coercing to be `ts`
Time Series:
Start = 1 
End = 14 
Frequency = 1 
 [1] 886.84 877.23 878.17 876.39 875.91 887.00 887.99 876.09 872.35 865.74 853.67 855.86 868.24
[14] 871.99
attr(,"index")
 [1] "2013-09-24" "2013-09-25" "2013-09-26" "2013-09-27" "2013-09-30" "2013-10-01" "2013-10-02"
 [8] "2013-10-03" "2013-10-04" "2013-10-07" "2013-10-08" "2013-10-09" "2013-10-10" "2013-10-11"
Jilber Urbina
  • 58,147
  • 10
  • 114
  • 138
  • Thanks Jiber.. But when I am trying to `plot` above ts() object, I got some number like 0,50,100.... in x-axis but it should be `date` – Ajay Nov 07 '13 at 12:54
  • @Ajay please read G. Grothendieck's explanation on [this question](http://stackoverflow.com/questions/16398705/create-a-ts-object-with-a-daily-timeseries). – Jilber Urbina Nov 07 '13 at 13:02
  • The `zoo` approach is preferred when using the `forecast` package (since `zoo` is loaded when `forecast` is). – Jubbles Feb 20 '15 at 22:39