我在R中有两个包含3列的数据帧:
df1 <- data.frame("Gene"=c("Myc", "Rad", "Meg", "Cdc"), "Meth"=c(13, 62, 62, 79), "Exp"=c(-4.2, 1, 0.9, -2))
df2 <- data.frame("Gene"=c("Rad", "Gnas", "Meg", "Klm"), "Meth"=c(54, 13, 05, 84), "Exp"=c(-3.2, 0, 3.9, -2))
我想制作新数据帧的两个版本(或两个版本中的至少一个)。 1) 包含完整的df1,添加了两个与df2 Gene列重叠的新列,例如:
df3 <- data.frame("Gene"=c("Myc", "Rad", "Meg", "Cdc"), "Meth"=c(13, 62, 62, 79), "Exp"=c(-4.2, 1, 0.9, -2), "Meth2"=c(NA, 54, 05, NA), "Exp2"=c(NA, -3.2, 3.9, NA))
2) 仅包含df1和df2中的基因值:
df3 <- data.frame("Gene"=c("Rad", "Meg"), "Meth"=c(62, 62), "Exp"=c(1, 0.9), "Meth2"=c(54, 05), "Exp2"=c(-3.2, 3.9))
答案 0 :(得分:1)
您可以使用merge
(也可以查看here):
> merge(df1, df2, by="Gene", all.x=T)
Gene Meth.x Exp.x Meth.y Exp.y
1 Cdc 79 -2.0 NA NA
2 Meg 62 0.9 5 3.9
3 Myc 13 -4.2 NA NA
4 Rad 62 1.0 54 -3.2
> merge(df1,df2, by = "Gene")
Gene Meth.x Exp.x Meth.y Exp.y
1 Meg 62 0.9 5 3.9
2 Rad 62 1.0 54 -3.2
答案 1 :(得分:1)
?merge可以做到这一点。
df3 <- merge(df1,df2, by = "Gene", all.x = TRUE)
df4 <- merge(df1,df2, by = "Gene")