1

data.tableランクによって行のサブセットを選択するためにどのように使用しますか? 大規模なデータ セットがあり、効率的に処理したいと考えています。

> dt <- data.table(id=1:200, category=sample(LETTERS, 200, replace=T))
> dt[,count:=length(id), by=category]
> dt
      id category count
  1:   1        O    13
  2:   2        O    13
 ---                   
199: 170        N     3
200: 171        H     3

私がやりたいことは、k最も一般的なカテゴリではないカテゴリのカテゴリを「OTHER」に効率的に変更することです。次のようなもの:

dt[rank > 5,category:="OTHER", by=category]

私は初めてdata.tableで、効率的な方法でランクを取得する方法がよくわかりません。これは機能する方法ですが、扱いにくいようです。

counts <- unique(dt$count)
decision <- max(counts[rank(-counts)>5])
dt[count<=decision, category:='OTHER']

アドバイスをいただければ幸いです。正直なところ、必要がなければ「カウント」列も必要ありません。

4

0 に答える 0