[R] Newbie Time Series Questions

Jason Turner
Thu, 17 Oct 2002 08:41:25 -0000

On Thu, Oct 17, 2002 at 12:39:08PM -0700, Robert Schick
wrote:
> I have a data set of monthly river flows from 1960-2000, which are
> similar in structure to the nottem data:
>
> > klam.flow
>       Oct  Nov  Dec  Jan  Feb   Mar  Apr  May  Jun  Jul  Aug  Sep
> 1961 1461 1716 2524 1773 1906  2005 1756 1575 1387  983 1094 1382
> 1962 1907 2253 1985 1907 1769  1676 2634 1386  929  766  968 1309
> ...
>
> Which quickly led me to realize the data aren't a "ts"
object, as it
> plotted 40 stacked lines instead of one long series. I've tried
> converting to this using ts or as.ts, e.g.

looks like a data frame, then.  You've got to R it's not a multivariate
time series; R thinks it's one series for Oct, one for Nov, etc.
So, convert to matrix, and you'll need to:

1) transpose it, so the *column* vectors are sequential in time (by default,
when R unrolls a matrix to a vector, it stacks the columns, not the rows).
2) convert the matrix to a vector, so R knows it's univariate.
3) *then* convert to time series.  whew.  ;-)

klam.ts <- ts(as.vector(t(klam.flow)),frequency=12,start=c(1961,10))

klam.ts
      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
1961                                              1461 1716 2524
1962 1773 1906 2005 1756 1575 1387  983 1094 1382 1907 2253 1985
1963 1907 1769 1676 2634 1386  929  766  968 1309

If that's wrong - i.e. each row in klam.flow is one year and the columns
are just in a funny order - you'll have to juggle the columns before step
1 above.  Like so:

> klam.ts <-
ts(as.vector(t(klam.flow[,c(4:12,1:3)])),frequency=12,start=c(1961,1))
> klam.ts
      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
1961 1773 1906 2005 1756 1575 1387  983 1094 1382 1461 1716 2524
1962 1907 1769 1676 2634 1386  929  766  968 1309 1907 2253 1985

Cheers

Jason
--
Indigo Industrial Controls Ltd.
64-21-343-545
jasont at indigoindustrial.co.nz