如何使用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']
我很感激任何建议。说实话,如果没有必要,我甚至不需要“计数”栏。