使用多个条件在data.table中排名

时间:2018-04-09 22:58:03

标签: r data.table criteria rank

  • table:Brands_12M as data.table

  • 名称(Brands_12M):“主要类别”,“品牌”,“销售”

有5大类和500个品牌。

我正在尝试使用以下方式将“排名”列添加到“主要类别”的“销售”中:

Brands_12M <- Brands_12M[,Rank := frankv(Brands_12M, "Sales", "Major Category", order=-1L)]

对于忽略“主要类别”的所有品牌,我的排名为1-500。我需要按品牌排名每个“主要类别”,即1-100,1-100等

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

在查看所有评论后我改变了我的回答。这似乎更接近于建议。我在下面使用的样本数据集有500个观察结果,这似乎是海报想要的。

每个Major Category内的等级也从1到100。

库(data.table)

Brands_12M <- data.table(`Major Category` = rep(1:5,100),
                         Brand = 1:500,
                         Sales = runif(500))

Brands_12M <- Brands_12M[,Rank:=frankv(Sales, order=-1L),by=c("Major Category")][order(`Major Category`,Sales)]