2017-06-30 16 views
2

データセットがあり、既存のデータのランク付けのために複数の列を追加する必要があります。私は一度に1つの余分な列を追加することでこれをやっていますが、私は文字のベクトルとして列を渡すことによってより効率的な方法を望んでいましたか?ここでは簡単な例です:データテーブルに複数の新しい列を追加する

require(data.table) 
dt <- data.table(x = rnorm(10), 
       y = rnorm(10)) 

dt[, ":=" (rank_x = rank(x, ties.method = "min"), 
      rank_y = rank(y, ties.method = "min"))] 

ランキング法は、私は我々がpasteでこれを行うことができ、新しい変数を作成する

cols <- c("x", "y") 

dt[, cols := lapply(.SD, function(x) rank(x, ties.method = "min")), .SDcols = cols] 

答えて

3

ようなものを使用することを期待していたので、すべてのケースで同じである

dt[, paste0("rank_", cols) := lapply(.SD, rank, ties.method = "min"), .SDcols = cols] 
関連する問題