我正在尝试汇总以下数据的列:
Label A B C D E
1: a 0.00 0 0.00 0 1
2: b 0.00 0 0.00 0 2
3: c 0.00 0 0.00 0 3
4: d 0.00 0 0.11 0 4
5: e 0.44 0 4.00 0 5
通过以下参考数据分为两组;
ID Exp
1: A Dis
2: B Con
3: C Con
4: D Con
5: E Dis
所以所需的列输出是;
Label A E B C D
非常感谢您提供帮助或指针来完成此任务。
答案 0 :(得分:2)
我们可以根据“ Exp”列order
,提取“ ID”并使用该数据集重新排序
dt[, c("Label", refdt[order(-Exp)]$ID), with = FALSE]
或与setcolorder
setcolorder(dt, c("Label", refdt[order(-Exp)]$ID))
dt
# Label A E B C D
#1: a 0.00 1 0 0.00 0
#2: b 0.00 2 0 0.00 0
#3: c 0.00 3 0 0.00 0
#4: d 0.00 4 0 0.11 0
#5: e 0.44 5 0 4.00 0
如@Frank所述,最好从[]
setcolorder(dt, c("Label", refdt[order(-Exp), ID]))
注意:假设两个数据集均为data.table