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