2017-10-10 10 views
1

整数から名前に特定の文字列 "_cat"を持つdata.tableのいくつかの列を変換しようとしていますカテゴリデータ型に変換する。 data.tableの列の合計数が多い(700以上)ので、データ型を変更するために名前に_catが含まれている列を特定するために700以上の列を使いたいとは思わない。何とか私は変換するために、このCAT_ID論理ベクトルを使用する必要が多くのdata.table列を、列名の文字列パターンに一致させるだけで変換します。

cat_id <- grepl('_cat', colnames(dt)) 

:最初、私は列が名前に「_cat」を持つ論理配列を示すを取得

(それらはすべてdata.table上にランダムです)対応する列はcat_idにTRUEをとり、因数分解する。私は、これはGROUP BY操作ではありません

dt <- dt[, lapply(.SD, as.factor), by = ??? ] 

答えて

3

(CAT_IDエントリがFALSEであるものがのための)パターンなしの列を除外するために句で使用するかどうかはわかりません。列を選択するため、関心

dt[, (cat_id) := lapply(.SD, factor), .SDcols = cat_id ] 

cat_id <- grep('_cat', colnames(dt), value = TRUE) 
の列に戻って出力を( :=)を .SDcolsを使用し、割り当てます
関連する問題