<div>Dear Matthew</div><div><br></div><div>Thank you very much for your help.</div><div>I found something fascinating. I do not know the details of POSIXct and iTime but look at this.</div><div><br></div><div><div>library(data.table)</div>

<div>library(ggplot2)</div></div><div><br></div><div><div>datetimes &lt;- c(&quot;2011 NOV18 09:29:16&quot;, &quot;2011 NOV18 10:42:40&quot;, &quot;2011 NOV18 10:47:12&quot;, </div><div>&quot;2011 NOV18 11:06:01&quot;, &quot;2011 NOV18 11:35:34&quot;, &quot;2011 NOV18 11:51:09&quot;, </div>

<div>&quot;2011 NOV18 12:23:16&quot;, &quot;2011 NOV18 12:30:01&quot;, &quot;2011 NOV18 12:34:28&quot;, </div><div>&quot;2011 NOV18 12:51:45&quot;, &quot;2011 NOV18 12:56:37&quot;, &quot;2011 NOV18 13:28:17&quot;, </div>
<div>
&quot;2011 NOV18 13:37:41&quot;, &quot;2011 NOV18 13:49:07&quot;, &quot;2011 NOV18 14:47:04&quot;, </div><div>&quot;2011 NOV18 15:16:39&quot;, &quot;2011 NOV18 15:17:10&quot;, &quot;2011 NOV18 15:19:19&quot;, </div><div>
&quot;2011 NOV19 08:28:00&quot;, &quot;2011 NOV19 09:20:55&quot;, &quot;2011 NOV19 10:41:25&quot;, </div>
<div>&quot;2011 NOV19 10:41:41&quot;, &quot;2011 NOV19 12:53:15&quot;, &quot;2011 NOV20 11:22:59&quot;, </div><div>&quot;2011 NOV20 19:53:25&quot;, &quot;2011 NOV21 07:16:35&quot;, &quot;2011 NOV21 08:50:45&quot;, </div>
<div>
&quot;2011 NOV21 09:32:59&quot;, &quot;2011 NOV21 09:43:01&quot;, &quot;2011 NOV21 10:29:52&quot;, </div><div>&quot;2011 NOV21 10:34:23&quot;, &quot;2011 NOV21 10:37:09&quot;, &quot;2011 NOV21 10:55:18&quot;, </div><div>
&quot;2011 NOV21 11:43:46&quot;, &quot;2011 NOV21 11:46:50&quot;, &quot;2011 NOV21 12:10:16&quot;, </div>
<div>&quot;2011 NOV21 12:16:44&quot;, &quot;2011 NOV21 13:53:42&quot;, &quot;2011 NOV21 13:53:43&quot;, </div><div>&quot;2011 NOV21 14:06:06&quot;, &quot;2011 NOV21 14:23:39&quot;, &quot;2011 NOV21 15:14:21&quot;, </div>
<div>
&quot;2011 NOV21 15:35:53&quot;, &quot;2011 NOV21 15:46:29&quot;, &quot;2011 NOV21 15:49:37&quot;, </div><div>&quot;2011 NOV21 16:45:32&quot;, &quot;2011 NOV21 20:36:31&quot;, &quot;2011 NOV22 08:56:03&quot;, </div><div>
&quot;2011 NOV22 09:33:12&quot;, &quot;2011 NOV22 09:39:52&quot;, &quot;2011 NOV22 10:40:46&quot;, </div>
<div>&quot;2011 NOV22 11:19:48&quot;, &quot;2011 NOV22 11:23:32&quot;, &quot;2011 NOV22 12:04:16&quot;, </div><div>&quot;2011 NOV22 12:07:04&quot;, &quot;2011 NOV22 12:23:31&quot;, &quot;2011 NOV22 12:28:54&quot;, </div>
<div>
&quot;2011 NOV22 12:31:14&quot;, &quot;2011 NOV22 12:53:31&quot;, &quot;2011 NOV22 12:54:11&quot;, </div><div>&quot;2011 NOV22 13:41:54&quot;, &quot;2011 NOV22 15:34:11&quot;, &quot;2011 NOV23 07:03:44&quot;, </div><div>
&quot;2011 NOV23 07:04:57&quot;, &quot;2011 NOV23 08:01:42&quot;, &quot;2011 NOV23 08:37:14&quot;, </div>
<div>&quot;2011 NOV23 08:57:55&quot;, &quot;2011 NOV23 09:00:34&quot;, &quot;2011 NOV23 09:10:38&quot;, </div><div>&quot;2011 NOV23 09:21:19&quot;, &quot;2011 NOV23 09:23:58&quot;, &quot;2011 NOV23 10:48:10&quot;, </div>
<div>
&quot;2011 NOV23 11:23:58&quot;, &quot;2011 NOV23 11:49:14&quot;, &quot;2011 NOV23 12:19:44&quot;, </div><div>&quot;2011 NOV23 12:31:34&quot;, &quot;2011 NOV23 12:48:00&quot;, &quot;2011 NOV23 13:22:08&quot;, </div><div>
&quot;2011 NOV23 13:30:36&quot;, &quot;2011 NOV23 14:01:56&quot;, &quot;2011 NOV23 14:38:15&quot;, </div>
<div>&quot;2011 NOV23 14:54:02&quot;, &quot;2011 NOV23 15:33:31&quot;, &quot;2011 NOV23 15:49:12&quot;, </div><div>&quot;2011 NOV25 09:21:42&quot;, &quot;2011 NOV25 09:22:25&quot;, &quot;2011 NOV25 09:24:22&quot;, </div>
<div>
&quot;2011 NOV25 10:07:42&quot;, &quot;2011 NOV25 15:03:15&quot;, &quot;2011 NOV28 08:12:32&quot;, </div><div>&quot;2011 NOV28 09:20:39&quot;, &quot;2011 NOV28 09:26:09&quot;, &quot;2011 NOV28 10:25:47&quot;, </div><div>
&quot;2011 NOV28 11:19:40&quot;, &quot;2011 NOV28 11:54:54&quot;, &quot;2011 NOV28 14:33:53&quot;, </div>
<div>&quot;2011 NOV28 15:08:25&quot;, &quot;2011 NOV28 15:09:25&quot;, &quot;2011 NOV28 15:23:07&quot;, </div><div>&quot;2011 NOV28 15:23:30&quot;, &quot;2011 NOV28 15:50:35&quot;, &quot;2011 NOV29 08:22:39&quot;, </div>
<div>
&quot;2011 NOV29 09:08:51&quot;, &quot;2011 NOV29 09:10:15&quot;, &quot;2011 NOV29 10:44:17&quot;, </div><div>&quot;2011 NOV29 11:32:05&quot;, &quot;2011 NOV29 12:00:52&quot;, &quot;2011 NOV29 12:32:48&quot;, </div><div>
&quot;2011 NOV29 13:21:50&quot;, &quot;2011 NOV29 13:22:12&quot;, &quot;2011 NOV29 13:22:38&quot;, </div>
<div>&quot;2011 NOV29 13:23:35&quot;, &quot;2011 NOV29 13:28:38&quot;, &quot;2011 NOV29 13:29:44&quot;, </div><div>&quot;2011 NOV29 13:30:25&quot;, &quot;2011 NOV29 13:32:13&quot;, &quot;2011 NOV29 13:33:28&quot;, </div>
<div>
&quot;2011 NOV29 13:35:59&quot;, &quot;2011 NOV29 13:37:01&quot;, &quot;2011 NOV29 13:39:37&quot;, </div><div>&quot;2011 NOV29 13:41:33&quot;, &quot;2011 NOV29 14:08:07&quot;, &quot;2011 NOV29 14:09:53&quot;, </div><div>
&quot;2011 NOV29 14:13:15&quot;, &quot;2011 NOV29 14:16:16&quot;, &quot;2011 NOV29 14:17:32&quot;, </div>
<div>&quot;2011 NOV29 14:37:05&quot;, &quot;2011 NOV29 14:59:51&quot;, &quot;2011 NOV29 14:59:51&quot;, </div><div>&quot;2011 NOV29 14:59:54&quot;, &quot;2011 NOV29 15:00:10&quot;, &quot;2011 NOV29 15:13:22&quot;, </div>
<div>
&quot;2011 NOV29 16:09:50&quot;, &quot;2011 NOV29 16:10:17&quot;, &quot;2011 NOV29 16:31:14&quot;, </div><div>&quot;2011 NOV29 16:43:20&quot;, &quot;2011 NOV30 09:22:09&quot;, &quot;2011 NOV30 10:19:21&quot;, </div><div>
&quot;2011 NOV30 11:42:04&quot;, &quot;2011 NOV30 11:50:11&quot;, &quot;2011 NOV30 12:21:11&quot;, </div>
<div>&quot;2011 NOV30 13:06:39&quot;)</div><div><br></div><div>datetimes &lt;- strptime(datetimes,&quot;%Y %b%d %H:%M:%S&quot;)</div><div>dtdt &lt;- IDateTime(datetimes)</div><div>setkey(x=dtdt,idate,itime)</div><div>plot(dtdt$idate,dtdt$itime)#works although I still need to figure out how to get times that I, as a human, understand</div>

<div>qplot(x=dtdt$idate,y=dtdt$itime) # gives an error</div><div><br></div><div>#Error in as.data.frame.default(x[[i]], optional = TRUE) : </div><div>#  cannot coerce class &#39;&quot;ITime&quot;&#39; into a data.frame</div>

<div><br></div><div>dtdt[,qplot(idate,itime)]#same error</div><div><br></div><div><div><br></div><div>qplot(x=dtdt$idate,y=as.POSIXct(dtdt$itime,tz=&quot;EST&quot;)) #have to specify the time zone otherwise I got evertying at UTC</div>

</div></div><div><br></div><div><b>Clearly this has something to do with the way ggplot wants its data. Plot handled it but qplot did not.</b></div><div><br></div><div><br></div>Farrel Buchinsky<img src="cid:517@goomoji.gmail" style="margin-top: 0px; margin-right: 0.2ex; margin-bottom: 0px; margin-left: 0.2ex; vertical-align: middle; " goomoji="517"><br>

<br>
<br><br><div class="gmail_quote">On Fri, Dec 16, 2011 at 03:50, Matthew Dowle <span dir="ltr">&lt;<a href="mailto:mdowle@mdowle.plus.com">mdowle@mdowle.plus.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi.<br>
<br>
You should be able to add more than one column in one step using := by<br>
setting with=FALSE like this :<br>
<br>
&gt; DT = data.table(a=1:3,b=4:6)<br>
&gt; DT<br>
     a b<br>
[1,] 1 4<br>
[2,] 2 5<br>
[3,] 3 6<br>
&gt; DT[,c(&quot;newcol1&quot;,&quot;newcol2&quot;):=list(7:9,3.14)]<br>
Error in `[.data.table`(DT, , `:=`(c(&quot;newcol1&quot;, &quot;newcol2&quot;),<br>
list(7:9,  :<br>
  LHS of := must be a single column name, when with=TRUE. When<br>
with=FALSE the LHS may be a vector of column names or positions.<br>
<br>
so set with=FALSE :<br>
<br>
&gt; DT[,c(&quot;newcol1&quot;,&quot;newcol2&quot;):=list(7:9,3.14),with=FALSE]<br>
Error in `[.data.table`(DT, , `:=`(c(&quot;newcol1&quot;, &quot;newcol2&quot;),<br>
list(7:9,  :<br>
  Logical error. Can only add new columns one at a time currently<br>
&gt;<br>
<br>
I intended that to work so I&#39;ll take a look. But, the intention is at<br>
some point to enable this :<br>
<br>
   DT[,{ newcol1 := ....<br>
         newcol2 := ....<br>
         newcol3 := newcol1 + newcol2<br>
       }, by=... ]<br>
<br>
where not only can you add multiple columns by reference and by group,<br>
but they can &#39;see&#39; previous columns just added. That&#39;s going to be quite<br>
tricky to implement so don&#39;t hold your breath!<br>
<br>
In the meantime it&#39;s either one at a time with :=, or use (slower) [&lt;-<br>
method to add multiple columns (via at least one full table copy).<br>
<br>
Re plotting, I&#39;m hoping to learn ggplot2 myself soon, so bear that in<br>
mind, but this is the way I thought should work :<br>
<br>
 <a href="http://ape.ph" target="_blank">ape.ph</a>[,qplot(date, timei)]<br>
<br>
If that gives the same error I&#39;m not sure why it would try to coerce<br>
ITime into a data.frame. Does anyone else know?  If you can provide some<br>
example data it might help save us time to reproduce it.<br>
<br>
Matthew<br>
<div><div class="h5"><br>
<br>
<br>
On Thu, 2011-12-15 at 19:25 -0500, Farrel Buchinsky wrote:<br>
&gt; I was able to take a column of dates and times that looked like this<br>
&gt;<br>
&gt; 2011 NOV18 09:29:16<br>
&gt;<br>
&gt;<br>
&gt; I then tried this<br>
&gt;<br>
&gt; <a href="http://ape.ph" target="_blank">ape.ph</a>[,date:=IDateTime(strptime(<a href="http://ape.ph" target="_blank">ape.ph</a>$time,&quot;%Y %b%d %H:%M:%S&quot;))[[1]]]<br>
&gt; <a href="http://ape.ph" target="_blank">ape.ph</a>[,timei:=as.ITime(strptime(<a href="http://ape.ph" target="_blank">ape.ph</a>$time,&quot;%Y %b%d %H:%M:%S&quot;))]<br>
&gt;<br>
&gt;<br>
&gt; I had to create one column called date to accept the first column of<br>
&gt; the IDateTime output. There does not appear to be a way to use the<br>
&gt; IDateTime function and take both of its columns and stick it into the<br>
&gt; data.table since one can only add one new column at a time as far as I<br>
&gt; can tell. Anyway, I then created a variable timei to accept the time.<br>
&gt;<br>
&gt;<br>
&gt; I wanted to plot the times that something happened on the y axis and<br>
&gt; then on the x axis I wanted to have the various dates<br>
&gt;<br>
&gt;<br>
&gt; library(ggplot2)<br>
&gt; qplot(<a href="http://ape.ph" target="_blank">ape.ph</a>[,date], <a href="http://ape.ph" target="_blank">ape.ph</a>[,timei])<br>
&gt;<br>
&gt;<br>
&gt; but alas I got this<br>
&gt;<br>
&gt;<br>
&gt; Error in as.data.frame.default(x[[i]], optional = TRUE) :<br>
&gt; cannot coerce class &#39;&quot;ITime&quot;&#39; into a data.frame<br>
&gt;<br>
&gt;<br>
&gt; I am eventually hoping for this<br>
&gt; qplot(<a href="http://ape.ph" target="_blank">ape.ph</a>[,date], <a href="http://ape.ph" target="_blank">ape.ph</a>[,timei]) +<br>
&gt;    scale_y_datetime(format=&quot;%H:%M:%S&quot;) +<br>
&gt;            xlab(&quot;Day&quot;) + ylab(&quot;Hour&quot;)<br>
&gt;<br>
&gt;<br>
&gt; Do you have any examples of dates and times used in a data.table and<br>
&gt; then being used to plot graphs? I would love to see some examples. I<br>
&gt; could not find any<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Farrel Buchinsky<br>
&gt; Google Voice Tel: <a href="tel:%28412%29%20567-7870" value="+14125677870">(412) 567-7870</a><br>
&gt;<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; datatable-help mailing list<br>
&gt; <a href="mailto:datatable-help@lists.r-forge.r-project.org">datatable-help@lists.r-forge.r-project.org</a><br>
&gt; <a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help</a><br>
<br>
<br>
</blockquote></div><br>