I have :
raw <- read.table("monthly.text", skip=3, sep="|",
col.names=c("junk", "junk2",
"wpi", "g.wpi", "wpi.primary",
"g.wpi.primary",
"wpi.fuel", "g.wpi.fuel",
"wpi.manuf", "g.wpi.manuf",
"cpi.iw", "g.cpi.iw",
"cpi.unme", "g.cpi.unme",
"cpi.al", "g.cpi.al", "cpi.rl",
"g.cpi.rl"))
Now I can do things like:
g.wpi = ts(raw$g.wpi, frequency=12, start=c(1994,7))
and it works fine. One by one, I can make time-series objects.
Is there a way to tell R that the entire data frame is a set of
time-series, so that I don't have to go column by column and make a
new ts() out of each?
I tried:
M = ts(raw, frequency=12, start=c(1994,7))
ts.plot(M[,"wpi"], M[,"wpi.manuf"])
but this gives nonsense results. Also, syntax like M$wpi is a lot
nicer than M[,"wpi"]. Any ideas about what might work?
An unrelated suggestion: I found the documentation of ts() to be quite
daunting. I have been around time-series and computer programming for
decades. But it took me a while to handle the basics : to read in a
file, to make time-series vectors, to run ARMA models. This stuff
ought to be easier to learn. I tried to write an ARMA example, and put
it up on the web, which would've been a godsend to me if I had found
it earlier (http://www.mayin.org/~ajayshah/KB/R/tsa.html).
I believe that the R documentation framework could do well by always
having a 2000 word conceptual introduction + little tutorial on each
package, instead of straight jumping into man pages on each function
(which is the only documentation that we have presently).
--
Ajay Shah Consultant
ajayshah at mayin.org Department of Economic Affairs
http://www.mayin.org/ajayshah Ministry of Finance, New Delhi
Ajay Shah <ajayshah <at> mayin.org> writes:
:
: I have :
:
: raw <- read.table("monthly.text", skip=3, sep="|",
: col.names=c("junk", "junk2",
: "wpi", "g.wpi", "wpi.primary",
"g.wpi.primary",
: "wpi.fuel", "g.wpi.fuel",
"wpi.manuf", "g.wpi.manuf",
: "cpi.iw", "g.cpi.iw",
"cpi.unme", "g.cpi.unme",
: "cpi.al", "g.cpi.al",
"cpi.rl", "g.cpi.rl"))
:
: Now I can do things like:
:
: g.wpi = ts(raw$g.wpi, frequency=12, start=c(1994,7))
:
: and it works fine. One by one, I can make time-series objects.
:
: Is there a way to tell R that the entire data frame is a set of
: time-series, so that I don't have to go column by column and make a
: new ts() out of each?
:
: I tried:
:
: M = ts(raw, frequency=12, start=c(1994,7))
: ts.plot(M[,"wpi"], M[,"wpi.manuf"])
:
: but this gives nonsense results.
Converting a data frame to a ts object seems to work for me:
R> my.df <- data.frame(a = 1:4, b = 5:8)
R> my.ts <- ts(my.df, start=c(2000,4), freq=12)
R> my.ts.a <- my.ts[,"a"]
R> my.ts.a
Apr May Jun Jul
2000 1 2 3 4
Suggest you provide a small reproduceable example that illustrates
the problem.
: Also, syntax like M$wpi is a lot
: nicer than M[,"wpi"]. Any ideas about what might work?
R> "$.ts" <- function(x, i) x[,i]
R> my.ts$a
Apr May Jun Jul
2000 1 2 3 4