通过来自另一个data.table文件的引用来分组/聚合data.table列。

时间:2018-08-24 17:03:55

标签: r data.table

我正在尝试汇总以下数据的列:

       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 

非常感谢您提供帮助或指针来完成此任务。

1 个答案:

答案 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