R に POSIXct クラスとして格納されているタイムスタンプから日付を抽出したいと考えています。
例えば
> str(wdt$v_timestamp)
POSIXct[1:15399], format: "2011-08-15 00:00:00" "2011-08-18 18:30:00" "2011-07-20 22:15:00" "2011-07-05 03:30:00" "2011-09-09 00:30:00" ...
変換をするとつまずきそう
> wdt[,v_date:=trunc(v_timestamp, "day")]
Error in `[.data.table`(wdt, , `:=`(v_date, trunc(v_timestamp, "day"))) :
(list) object cannot be coerced to type 'double'
In addition: Warning message:
In `[.data.table`(wdt, , `:=`(v_date, trunc(v_timestamp, "day"))) :
Supplied 11 items to be assigned to 15399 items of column 'v_date' (recycled leaving remainder of 10 items).
trunc
リストを返し、それをリサイクルしようとするからだと思います。
ただし、これは機能します。
> str(wdt$v_date) > wdt[,v_date:=as.POSIXct(trunc(v_timestamp, "day"))]
> str(wdt$v_date)
POSIXct[1:15399], format: "2011-08-15" "2011-08-18" "2011-07-20" "2011-07-05" "2011-09-09" "2011-04-20" "2010-12-03" "2011-01-31" ...
リストに関するエラー メッセージが表示されますが、よくわかりません。そして、これを行うためのより良い方法はありますか?