R:按因子和按组排名

时间:2016-08-25 21:17:06

标签: r ranking

希望有人知道R中的简单解决方案。

我有一个包含变量数量的数据集'temp':

Department  Product  Var1 
  D1         P1       3
  D1         P2       6
  D2         P1       4
  D3         P2       2
  D3         P3       3

所以Var1是数字。

已经计算出每个部门内的每个产品。

现在,我正在尝试按产品在每个部门组中排名。 按产品排名很容易:

ranked<-transform(temp, rank_Var1= ave(Var1,  FUN = function(x) rank(x, ties.method = "average")))

但是,我找不到如何设置现在需要在每个部门内计算Var1等级的条件。

非常感谢任何建议。 谢谢

3 个答案:

答案 0 :(得分:2)

我们可以使用map.getSource('sourceName').setData(filteredData)

data.table

如果我们使用library(data.table) setDT(temp)[,rank_Var1 := rank(Var1, ties.method = "average"), by= .(Department, Product)] ,在第一个参数之后,我们指定分组变量

ave

答案 1 :(得分:0)

谢谢! 我找到了答案:)

temp2&lt; -ddply(temp,。(Department),summary,Product = Product,rank_Vq = ave(V1,FUN = function(x)rank(x,ties.method =“average”)))

答案 2 :(得分:0)

按照您想要的顺序排列您的因素:

temp$Product<-factor(temp$Product, levels=c("P1", "P2", "P3"))
temp$Department<-factor(temp$Department, levels=c("D1", "D2", "D3"))

然后设置您的排名,我们只需在原始数据框中添加一个名为rank的字段:

temp<-transform(temp,rank=ave(1:nrow(temp),Department,FUN=function(x) 
order(Department[x], Product[x])))