2017-01-27 4 views
2

colClassesの引数がdata.table::freadの場合、REQUEST_DATEの列は次の例のPOSIXctに変換されません。それは問題なしでROW_ID列を変換します。data.table colClassesからPOSIXctへの変換

library(data.table) 

txt <- "ROW_ID,REQUEST_TYPE,REQUEST_DATE 
1,OTHER,2009-07-31 07:35:38 
2,OTHER,2009-07-30 21:18:35 
3,OTHER,2009-07-30 21:18:30 
4,OTHER,2009-07-30 21:18:40 
5,OTHER,2009-07-30 21:18:39 
6,QUERY,2009-07-30 21:19:29 
7,OTHER,2009-07-30 21:18:42 
8,OTHER,2009-07-30 21:18:45 
9,OTHER,2009-07-31 07:35:31 
10,OTHER,2009-07-31 07:35:30 
" 
dt <- fread(txt, colClasses = c(ROW_ID = "character", REQUEST_DATE = "POSIXct")) 

典型的な変換も動作します:

dt[, as.POSIXct(REQUEST_DATE)] 
[1] "2009-07-31 07:35:38 EDT" "2009-07-30 21:18:35 EDT" "2009-07-30 21:18:30 EDT" "2009-07-30 21:18:40 EDT" "2009-07-30 21:18:39 EDT" 
[6] "2009-07-30 21:19:29 EDT" "2009-07-30 21:18:42 EDT" "2009-07-30 21:18:45 EDT" "2009-07-31 07:35:31 EDT" "2009-07-31 07:35:30 EDT" 

をこの特定のケースで、実際のデータは〜50メートルの行と多くの列を持っているので、私はしかしdt[, REQUEST_DATE := as.POSIXct(REQUEST_DATE)]を行うことはできません。代替構文も動作していないよう:

dt <- fread(txt, colClasses = list(POSIXct = "REQUEST_DATE")) 

freadためdata.tableヘルプは、「クラス(名前付きまたは名前なし)の文字ベクトルを言い、read.csvまたは列名のベクトルの名前付きリストとして。 freadは、colClassesが要求する場合にのみ上位の型に昇格させますが、NAsの結果として下位型には格下げされません実際にデータが失われた場合は、後でそのような列を強制する必要があります。

POSIXctは、characterよりも低いタイプと見なされています。

data.tableバージョン1.10.0を使用しています。

+1

colClasses argのドキュメントを更新する必要があるかもしれませんが、「日付は文字として現在読まれています。後で優れたファストタイムパッケージまたは標準ベース関数を使用して変換できます。 – Frank

+1

実際、私はファストタイムパッケージを使用しています。それは約12秒で50mの行を変換します。これはかなり良いです! – ruser9575ba6f

答えて

1

Frankがコメントに言及しているように、これは現在のdata.tableのように見えます。私は、パッケージでfastPOSIXct関数を使用して終了しました。それは私のラップトップで約12秒で50mの行を変換します。これは私の使用例にとってはかなり妥当です。

関連する問題