obradoa
2008-Jan-19 22:36 UTC
[R] Advice on plotting a factor and displaying missing levels
I am trying to plot how many records are inserted into a database on a certain date, but also represent days where no records are inserted. I can get a list of dates for inserted records using RMySQL result <- dbSendQuery(con, "select date_format(creation_ts, "%m/%d/%y") from mytable;") inserts<-fetch(res2, n=-1)>insertscreated 1 10/17/07 2 10/17/07 3 10/17/07 4 10/17/07 5 10/17/07 6 10/17/07 7 01/09/08 8 01/17/08 9 01/17/08 10 01/17/08 When I factor the "created" date column I get the following:> fcreated[1] 10/17/07 10/17/07 10/17/07 10/17/07 10/17/07 10/17/07 01/09/08 01/17/08 [9] 01/17/08 01/17/08 Levels: 01/09/08 01/17/08 10/17/07 Then I plot the factor plot(fcreated) The graph looks correct and I see how many records I have on which date. However, I need also to see dates where no records were found in the database. So instead of having 3 levels 01/09/08 01/17/08 10/17/07, I need to have the entire range of dates present on the graph starting with the earliest date and finishing with the latest date. (For instance 10/17/07, 10/18/07.... up to the latest date 1/9/08.) Y axis values for those dates should be 0, except for values tabulated in my factor variable "fcreated". Is this possible to do? Thanks! Alex -- View this message in context: http://www.nabble.com/Advice-on-plotting-a-factor-and-displaying-missing-levels-tp14976118p14976118.html Sent from the R help mailing list archive at Nabble.com.
Gabor Grothendieck
2008-Jan-20 00:08 UTC
[R] Advice on plotting a factor and displaying missing levels
Tabulate using table(), convert the dates to Date class and plot: f <- factor(c("10/17/07", "10/17/07", "10/17/07", "10/17/07", "10/17/07", "10/17/07", "01/09/08", "01/17/08", "01/17/08", "01/17/08")) ndays <- table(f) plot(as.Date(names(ndays), "%m/%d/%y"), ndays) On Jan 19, 2008 5:36 PM, obradoa <aobradovic at gmail.com> wrote:> > I am trying to plot how many records are inserted into a database on a > certain date, but also represent days where no records are inserted. I can > get a list of dates for inserted records using RMySQL > > result <- dbSendQuery(con, "select date_format(creation_ts, "%m/%d/%y") from > mytable;") > inserts<-fetch(res2, n=-1) > >inserts > created > 1 10/17/07 > 2 10/17/07 > 3 10/17/07 > 4 10/17/07 > 5 10/17/07 > 6 10/17/07 > 7 01/09/08 > 8 01/17/08 > 9 01/17/08 > 10 01/17/08 > > > When I factor the "created" date column I get the following: > > fcreated > [1] 10/17/07 10/17/07 10/17/07 10/17/07 10/17/07 10/17/07 01/09/08 01/17/08 > [9] 01/17/08 01/17/08 > Levels: 01/09/08 01/17/08 10/17/07 > > Then I plot the factor > > plot(fcreated) > > The graph looks correct and I see how many records I have on which date. > > However, I need also to see dates where no records were found in the > database. So instead of having 3 levels 01/09/08 01/17/08 10/17/07, I need > to have the entire range of dates present on the graph starting with the > earliest date and finishing with the latest date. (For instance 10/17/07, > 10/18/07.... up to the latest date 1/9/08.) Y axis values for those dates > should be 0, except for values tabulated in my factor variable "fcreated". > > Is this possible to do? > > Thanks! > > Alex > > -- > View this message in context: http://www.nabble.com/Advice-on-plotting-a-factor-and-displaying-missing-levels-tp14976118p14976118.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >