如何在多级R数据表中从组内列的最高值排序 我的目标是创建“总体排名”和“排名秒”列 第一个整体列可以实现如下所示 第二列的脚本不起作用 使用data.table样式实现目标的最有效方法是什么?
我们可能只需要按“类型”分组,因为每个“类型/代码”组合只有一行如何在多级R数据表中从组内列的最高值排序 我的目标是创建“总体排名”和“排名秒”列 第一个整体列可以实现如下所示 第二列的脚本不起作用 使用data.table样式实现目标的最有效方法是什么?,r,data.table,rank,R,Data.table,Rank,我们可能只需要按“类型”分组,因为每个“类型/代码”组合只有一行 setDT(data)[order(SUM, decreasing = TRUE), rank_sec := seq_len(.N), .(TYPE)] data # TYPE CODE SUM overall rank rank_sec # 1: old AB 93.00 7 2 2 # 2: old LI 220.00 6 1 1
setDT(data)[order(SUM, decreasing = TRUE), rank_sec := seq_len(.N), .(TYPE)]
data
# TYPE CODE SUM overall rank rank_sec
# 1: old AB 93.00 7 2 2
# 2: old LI 220.00 6 1 1
# 3: new EE 500.00 3 1 1
# 4: new HH 1.40 11 5 5
# 5: new AB 23.30 9 3 3
# 6: new xxx 62.05 8 2 2
# 7: new LI 10.68 10 4 4
# 8: end EE 500.00 3 3 3
# 9: end HH 384.60 5 4 4
#10: end AB 600.00 2 2 2
#11: end xxx 1375.70 1 1 1
第二行代码,每个组只有一行抱歉,我在总排名列上犯了一个错误。它不应该存在于该表框架中。我试图给每个组中的最高值的排名基础,但忘记了结构也应该改变,如果我想把整体排名。否则,我必须使用秩列对“代码”列进行另一个求和,然后使用重复的秩值查找多层数据集
data[order(SUM,decreasing = T,),"overall rank":=1:.N][]
data[order(SUM,decreasing = T,),"rank sec":=1:.N,by=c("TYPE","CODE")][]
setDT(data)[order(SUM, decreasing = TRUE), rank_sec := seq_len(.N), .(TYPE)]
data
# TYPE CODE SUM overall rank rank_sec
# 1: old AB 93.00 7 2 2
# 2: old LI 220.00 6 1 1
# 3: new EE 500.00 3 1 1
# 4: new HH 1.40 11 5 5
# 5: new AB 23.30 9 3 3
# 6: new xxx 62.05 8 2 2
# 7: new LI 10.68 10 4 4
# 8: end EE 500.00 3 3 3
# 9: end HH 384.60 5 4 4
#10: end AB 600.00 2 2 2
#11: end xxx 1375.70 1 1 1