Hi:

I'm a little more familiar with ggplot2 than zoo for graphing multivariate
time series, so my response is based on that bias.

On Sat, Jul 17, 2010 at 11:41 AM, linda.s <samrobertsmith@gmail.com> wrote:

> i am a beginner and tried to provide a reproducible example. is the
> following style a correct one?
>

It's beautiful. Thank you!


> Thanks.
>
> > dput(unem)
> > structure(list(a = c(10.2, 9.8, 9.5, 8.3, 7.9, 8.8, 8.9, 9.3,
> + 9.2, 9, 9.5, 12, 15.7, 16.1, 15.4, 14.7, 13.9, 15.3, 15.4, 15,
> + 13.8, 13.9, 14.1, 15.8), b = c(7, 6.7, 6.8, 6.1, 6.5, 7.4, 8.4,
> + 7.6, 7.5, 7.5, 7.8, 9.1, 11.2, 12.1, 12.2, 11.5, 11.5, 11.7,
> + 11.7, 11.2, 10.3, 10.7, 10.8, 11.6), c = c(6.5, 5.9, 5.9, 5.4,
> + 6.1, 6.6, 7.6, 7.2, 6.9, 7.1, 7.7, 8.4, 11.6, 11.3, 11, 10.9,
> + 12, 12.7, 12.8, 11, 10, 10.1, 10.3, 11.1), d = c(8.3, 7.6, 7.3,
> + 6.2, 6.2, 7.1, 8.5, 8.3, 7.7, 7.3, 8, 10.2, 13.9, 14.9, 14.8,
> + 13.1, 13.1, 13.3, 13.3, 12.1, 11.1, 11.3, 11.6, 12.7)), .Names = c("a",
> + "b", "c", "d"), class = "data.frame", row.names = c("JAN_08",
> + "FEB_08", "MAR_08", "APR_08", "MAY_08", "JUN_08", "JULY_08",
> + "AUG_08", "SEP_08", "OCT_08", "NOV_08", "DEC_08", "JAN_09", "FEB_09",
> + "MAR_09", "APR_09", "MAY_09", "JUN_09", "JUL_09", "AUG_09", "SEP_09",
> + "OCT_09", "NOV_09", "DEC_09"))
>           a    b    c    d
> JAN_08  10.2  7.0  6.5  8.3
> FEB_08   9.8  6.7  5.9  7.6
> MAR_08   9.5  6.8  5.9  7.3
> APR_08   8.3  6.1  5.4  6.2
> MAY_08   7.9  6.5  6.1  6.2
> JUN_08   8.8  7.4  6.6  7.1
> JULY_08  8.9  8.4  7.6  8.5
> AUG_08   9.3  7.6  7.2  8.3
> SEP_08   9.2  7.5  6.9  7.7
> OCT_08   9.0  7.5  7.1  7.3
> NOV_08   9.5  7.8  7.7  8.0
> DEC_08  12.0  9.1  8.4 10.2
> JAN_09  15.7 11.2 11.6 13.9
> FEB_09  16.1 12.1 11.3 14.9
> MAR_09  15.4 12.2 11.0 14.8
> APR_09  14.7 11.5 10.9 13.1
> MAY_09  13.9 11.5 12.0 13.1
> JUN_09  15.3 11.7 12.7 13.3
> JUL_09  15.4 11.7 12.8 13.3
> AUG_09  15.0 11.2 11.0 12.1
> SEP_09  13.8 10.3 10.0 11.1
> OCT_09  13.9 10.7 10.1 11.3
> NOV_09  14.1 10.8 10.3 11.6
> DEC_09  15.8 11.6 11.1 12.7
> > attach(unem)
> The following object(s) are masked from 'unem (position 3)':
>
>    a, b, c, d
> The following object(s) are masked from 'unem (position 4)':
>
>    a, b, c, d
>

This is one reason why attaching data frames that you created from objects
in your workspace is generally not a good idea. A cleaner approach is to use
with(df, {code}) instead, where {code} represents the function(s) you want
to apply to the (temporarily) attached data frame df. See ?with for details
and examples.

One way to create a multivariate ts object is as follows:

unemp <- ts(unem, start = c(2008, 1), end = c(2009, 12), freq = 12)
plot(unemp)

Unfortunately, the time labels are not what you wanted and an attempt to
suppress the x-axis on the multiple ts plot was futile. So, move on to plan
B.

> unem1 <- ts(unem$a, start = c(2008, 1), freq = 12)
> > plot(unem1, type = "o")
>
> Question:
> The X axis on the plot now starts from 2008.0; Since the data starts
> from January 2008, can I make it 2008.1, and also show 2009.12 on the
> axis?
>

2008.1 - 2009.12 doesn't thrill me; let's look at what we can get from the
graphics package ggplot2. If you don't already have it on your system,
install it from CRAN first.

library(ggplot2)

# Stack the time series into a vector labeled 'value' with series
identifiers
# put into a factor called 'variable'. This comes in handy when we
# plot and add the facet_grid() layer to the graph below.
munemp <- melt(unem)

# Create a vector of dates, convert them to class Date, and add to munemp
dts <- c(paste('2008-', 1:12, '-1', sep = ''), paste('2009-', 1:12, '-1',
    sep = ''))
> dts   # what it looks like
 [1] "2008-1-1"  "2008-2-1"  "2008-3-1"  "2008-4-1"  "2008-5-1"  "2008-6-1"
 [7] "2008-7-1"  "2008-8-1"  "2008-9-1"  "2008-10-1" "2008-11-1" "2008-12-1"
[13] "2009-1-1"  "2009-2-1"  "2009-3-1"  "2009-4-1"  "2009-5-1"  "2009-6-1"
[19] "2009-7-1"  "2009-8-1"  "2009-9-1"  "2009-10-1" "2009-11-1" "2009-12-1"
dates <- as.Date(dts)   # convert to class Date
munemp$dates <- rep(dates, 4)  # repeat each time for the four series

# ggplot is a system of adding graphical layers to a plot.
# Create the 'scaffold' - data frame, x and y variables
p <- ggplot(munemp, aes(x = dates, y = value))
# Add layers - line plots stacked on top one another with axis labels
p + geom_line() + facet_grid(variable ~ .) + xlab('') +
    ylab('Unemployment (%)')

I don't know about you, but I like the default labeling in ggplot2 better
than that from the first plot.

There is sure to be a nice way to do this in package zoo. As I'm in the
beginning phases of learning it, I'm looking forward to solutions from Achim
and/or Gabor to further my appreciation of their excellent package (no
pressure :).


HTH,
Dennis

Thanks.
>
> On Wed, Jul 14, 2010 at 9:49 AM, Achim Zeileis <Achim.Zeileis@uibk.ac.at>
> wrote:
> > You do not provide a reproducible example, as the posting guide asks you
> to.
> > But I guess that your time series setup using ts() is insufficient, see
> ?ts.
> > If the data starts in January 2008, why do you tell R that it starts in
> 1?
> > Presumably you have monthly data and
> >
> >  unem1 <- ts(unem$a, start = c(2008, 1), freq = 12)
> >  plot(unem1, type = "o")
> >
> > is what you want.
> >
> > hth,
> > Z
> >
> > On Wed, 14 Jul 2010, linda.s wrote:
> >
> >> R Code begins
> >> unem=read.csv("book5.csv",header=T,row.names=1)
> >> attach(unem)
> >> unem1=ts(unem$a, start=1)
> >> ts.plot(unem1,main="a")
> >> points(unem1,type="o")
> >> R Code ends
> >>
> >> because the time starts at JAN_08 and ends on DEC_09, how to make the
> >> y axis in the plot show month starting from JAN_08 instead of having
> >> the current
> >> ugly appearance (5, 10, 15, 20,?)?
> >>
> >> On Wed, Jul 14, 2010 at 9:20 AM, linda.s <samrobertsmith@gmail.com>
> wrote:
> >>>
> >>> R Code begins
> >>> unem=read.csv("book5.csv",header=T,row.names=1)
> >>> attach(unem)
> >>> unem1=ts(unem$Allen, start=1)
> >>> ts.plot(unem1,main="Allen")
> >>> points(unem1,type="o")
> >>> R Code ends
> >>>
> >>> because the time starts at JAN_08 and ends on DEC_09, how to make the
> >>> y axis in the plot show month starting from JAN_08 instead of having
> >>> the current
> >>> ugly appearance (5, 10, 15, 20,?)?
> >>>
> >>
> >
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]

