希望有人知道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等级的条件。
非常感谢任何建议。 谢谢
答案 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])))