我有两个数据框,需要将Ct
列从以下位置连接在一起:
> Df1
Gene Treatment Replic Ct
1 ACTA2 CON 1 1.900
2 ACTA2 CON 2 2.780
3 ACTA2 TGF 1 3.001
4 ACTA2 TGF 2 4.010
5 CAV1 CON 1 1.330
6 CAV1 CON 2 2.330
7 CAV1 TGF 1 6.300
8 CAV1 TGF 2 4.200
> Df2
Gene Treatment Replic Ct
1 PPIA CON 1 3.300
2 PPIA CON 2 1.700
3 PPIA TGF 1 1.001
4 PPIA TGF 2 3.700
无论Treatment
和Replic
中的Df1
和Df2
值是否都匹配,我想将Ct
中的Df2
值添加到Df1
中的新列。即,我正在寻找创建这个:
Gene Treatment Replic Ct Ct_y
1 ACTA2 CON 1 1.900 3.300
2 ACTA2 CON 2 2.780 1.700
3 ACTA2 TGF 1 3.001 1.001
4 ACTA2 TGF 2 4.010 3.700
5 CAV1 CON 1 1.330 3.300
6 CAV1 CON 2 2.330 1.700
7 CAV1 TGF 1 6.300 1.001
8 CAV1 TGF 2 4.200 3.700
数据集很大,并且某些地方缺少数据,因此我不能依靠先复制Df2
然后复制cbind
。同样,join_left
将不起作用,因为键不是唯一的。我迷路了。
非常感谢您提供任何帮助。
答案 0 :(得分:0)
您可能会这样-
> data.table::setDT(dt1)
> data.table::setDT(dt2)
> setnames(dt2,"Ct","Ct_y")
> dt1[dt2[,!c("Gene")],on=.(Treatment,Replic)]
Gene Treatment Replic Ct Ct_y
1: ACTA2 CON 1 1.900 3.300
2: CAV1 CON 1 1.330 3.300
3: ACTA2 CON 2 2.780 1.700
4: CAV1 CON 2 2.330 1.700
5: ACTA2 TGF 1 3.001 1.001
6: CAV1 TGF 1 6.300 1.001
7: ACTA2 TGF 2 4.010 3.700
8: CAV1 TGF 2 4.200 3.700