[R] date in plot, can't add regression line

Nordlund, Dan (DSHS/RDA) NordlDJ at dshs.wa.gov
Tue Aug 28 19:23:05 CEST 2012


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Norbert Skalski
> Sent: Tuesday, August 28, 2012 9:49 AM
> To: r-help at r-project.org
> Subject: [R] date in plot, can't add regression line
> 
> Hello all,
> 
> I have been using R for about 3 weeks and I am frustrated by a problem.
> I have read R in a nutshell, scoured the internet for help but I either
> am not understanding examples or am missing something completely basic.
> Here is the problem:
> 
> I want to plot data that contains dates on the x axis.  Then I want to
> fit a line to the data.  I have been unable to do it.
> 
> This is an example of the data (in a dataframe called
> "tradeflavorbyday"), 40 lines of it (I'm sorry it's not in a runnable
> form, not sure how to get that from R) :
>      tradeflavor  timestamp   x
> 1              1 2009-01-22   1
> 2              2 2009-01-22   1
> 3              1 2009-01-23   1
> 4              1 2009-01-27  54
> 5              1 2009-01-28 105
> 6              2 2009-01-28   2
> 7             16 2009-01-28   2
> 8              1 2009-01-29  71
> 9             16 2009-01-29   2
> 10             1 2009-01-30  42
> 11             1 2009-02-02  19
> 12            16 2009-02-02   2
> 13             1 2009-02-03  36
> 14             4 2009-02-03   2
> 15             8 2009-02-03   3
> 16             1 2009-02-04  73
> 17             8 2009-02-04  12
> 18            16 2009-02-04   7
> 19             1 2009-02-05  53
> 20             8 2009-02-05   6
> 21            16 2009-02-05   9
> 22             1 2009-02-06  38
> 23             4 2009-02-06   6
> 24             8 2009-02-06   2
> 25            16 2009-02-06   3
> 26             1 2009-02-09  42
> 27             2 2009-02-09   2
> 28             4 2009-02-09   1
> 29             8 2009-02-09   2
> 30             1 2009-02-10  87
> 31             4 2009-02-10   2
> 32             8 2009-02-10   4
> 33            16 2009-02-10   3
> 34             1 2009-02-11  55
> 35             2 2009-02-11   6
> 36             4 2009-02-11   4
> 37             8 2009-02-11   2
> 38            16 2009-02-11   8
> 39             1 2009-02-12 153
> 40             2 2009-02-12   6
> 
> 
> The plot displays the x column as the yaxis and the date as the x axis,
> grouped by the tradetype column.
> The timestamp column:
> > class(tradeflavorbyday$timestamp)
> [1] "POSIXlt" "POSIXt"
> 
> So in this case I want to plot tradetype 1 (method 1):
> 
> xdates <- tradeflavorbyday$timestamp[tradeflavorbyday$tradeflavor == 1]
> ydata <- tradeflavorbyday$x[tradeflavorbyday$tradeflavor == 1]
> 
> plot(xdates, ydata, col="black", xlab="Dates", ylab="Count")
> 
> Up to here it works great.
> 
> Now a abline through lm:
> 
> xylm <- lm(ydata~xdates)   <------ this fails, can't do dates as below
> abline(xylm, col="black")
> 
> > lm(ydata~xdates)
> Error in model.frame.default(formula = ydata ~ xdates,
> drop.unused.levels = TRUE) :
>   invalid type (list) for variable 'xdates'
> 
> 

You might try converting timestamp as follows

xdates <- as.POSIXct(tradeflavorbyday$timestamp[tradeflavorbyday$tradeflavor == 1])

Your original code should now work.


Hope this is helpful,

Dan

Daniel J. Nordlund
Washington State Department of Social and Health Services
Planning, Performance, and Accountability
Research and Data Analysis Division
Olympia, WA 98504-5204




More information about the R-help mailing list