tags:

views:

61

answers:

2

Hi all, I've got transactional data from a SQL query which I turn into a data frame. The first column of the df contains UNIX timestamps (format="%Y/%d/%m %H:%M") which I would like to use to create a graphics plot using par to display 1 unique lineplot per date. At the moment I am fumbling around with splitting column 1 and comparing with previous row to look for a change then assigning a dummy indicator to use in my plot command. Thanks, Will

A: 

Somewhat hard to answer without any example data but I'll take a shot.

I'm guessing your date looks like this: "2009-03-04 17:45"

It's probably being read as character. You can verify the class of each column of your data frame by running str(data.frame)

Using package stringr, you can just read the y/d/m and convert that to a Date class like so:

library(stringr)
date="2009-03-04 17:45"
date=as.Date(str_replace_all(str_sub(date,3,10),"-","/"), "%y/%d/%m")

You can then use date as a group in ggplot2 to plot one line per date. You could also create separate panels (one per date) using + facet_wrap(~date) in your ggplot call.

Maiasaura
`as.Date("2009-03-04 17:45")` works too :)
Marek
I am known for my convoluted solutions. ;)
Maiasaura
A: 
  1. start by just getting the date part from your timestamp

    SELECT *,DATE(timestampcolumn) as thedate FROM yourtable;

  2. Convert date column to factor

    mydf <- transform(mydf,as.factor(thedate))

  3. Plot it with e.g. xyplot

    library(lattice) xyplot(varx~vary|thedate,data=mydf)

Henrik