连接两个不同数据表的相同行(此列除外)的列值

时间:2014-07-29 23:22:11

标签: r add multiple-tables

我有两个基因aggHuman和aggRat的数据表

> aggHuman
   Human     Rat RNAtype
1   ASAP2   Asap2      Hy
2    BBS1    Bbs1      Hn
3    BBS2    Bbs2      Hn
4 SPATA22 Spata22      Hn

  > aggRat
    Human     Rat RNAtype
1   ASAP2   Asap2      Rn
2    BBS1    Bbs1      Ry
3    BBS2    Bbs2      Rn
4 SPATA22 Spata22      Rn

现在,我想在这两个表的列RNAtype中拼接值。例如,在用于ASAP2的aggHuman中,我们有Hy,而在aggRat中,我们有Rn。现在,我想通过缝合HyRn制作另一个类似的以下形式的表格。

        Human     Rat RNAtype
    1   ASAP2   Asap2      HyRn 

但是最初的两个表可以有不同顺序的基因。所以,我需要做的是在aggHuman中找到对应于ASAP2的行,并在aggRat中“找到”相同的基因行,然后进行缝合。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

步骤1:加载data.table库(您可能需要安装它):

library(data.table)

第2步:将data.frame转换为data.table,并设置适当的密钥:

setDT(aggHuman)
setkey(aggHuman,Human,Rat)
setDT(aggRat)
setkey(aggRat,Human,Rat)

步骤3:加入两个数据表,并执行所需的组合:

aggHumanRat <- aggHuman[aggRat]
aggHumanRat[,RNAtype := paste(RNAtype,RNAtype.1,sep="")][,RNAtype.1:=NULL]
aggHumanRat

希望这会有所帮助!!