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最常见的类别。类似于以下内容:

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