根据多项标准在 data.table 中排名
Ranking in data.table with multiple criteria
table: Brands_12M 作为 data.table
姓名(Brands_12M): "Major Category", "Brand", "Sales"
5大类500个品牌
我正在尝试将 "Rank" 列添加到基于 "Sales" 的 "Major Category" 使用:
Brands_12M <- Brands_12M[,Rank := frankv(Brands_12M, "Sales", "Major Category", order=-1L)]
我得到所有品牌的排名 1-500,忽略 "Major Category"。我需要按品牌对每个 "Major Category" 进行排名,即 1-100、1-100 等
非常感谢任何建议。
看了所有的评论我改了答案。这似乎更接近建议的内容。我在下面使用的样本数据集有 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)]
table: Brands_12M 作为 data.table
姓名(Brands_12M): "Major Category", "Brand", "Sales"
5大类500个品牌
我正在尝试将 "Rank" 列添加到基于 "Sales" 的 "Major Category" 使用:
Brands_12M <- Brands_12M[,Rank := frankv(Brands_12M, "Sales", "Major Category", order=-1L)]
我得到所有品牌的排名 1-500,忽略 "Major Category"。我需要按品牌对每个 "Major Category" 进行排名,即 1-100、1-100 等
非常感谢任何建议。
看了所有的评论我改了答案。这似乎更接近建议的内容。我在下面使用的样本数据集有 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)]