首页 > 解决方案 > 合并 R 中的文件并保留我进行匹配的列?

问题描述

我有两个巨大的数据表:

> head(x)
          gene_id chr  min_POS  max_POS     rs_id pvalue_G pvalue_E     metaP
1 ENSG00000047849   3 47568061 48143776  rs319690   0.7139   0.8613 0.7019270
2 ENSG00000047849   3 47568061 48143776 rs4392441   0.5452   0.7074 0.4881783
3 ENSG00000047849   3 47568061 48143776 rs4858887   0.5435   0.7074 0.4870446
4 ENSG00000047849   3 47568061 48143776 rs7651237   0.8621   0.6440 0.6529929
5 ENSG00000047849   3 47568061 48143776 rs6803741   0.5436   0.6612 0.4596804
6 ENSG00000047849   3 47568061 48143776 rs4858881   0.6142   0.6833 0.5189457
...

> head(b)
          V2        V3    V4 V5 V6
1: 194857581 194857582 rs224  0  -
2: 194857560 194857561 rs225  0  -
3:   7864903   7864904 rs226  0  +
4:   7864919   7864920 rs227  0  +
5:   5558441   5558442 rs228  0  +
6: 137923628 137923629 rs229  0  +
...

我正在尝试合并它们,使用:

x1=merge(b, x, by.x = "V4", by.y="rs_id")

问题是我想保留我合并的所有 V4 和 rs_id。这次合并给了我 x1 中的 89 行,我希望有一个额外的列,其中包含所有匹配 V4 和 rs_id 的列。

b 文件也很大,因此欢迎任何更有效的方式。

基本上我需要在 V4 和 rs_id 上匹配 x 和 b,我需要在最终数据框中保留的列是:gene_id、chr、rs_id(匹配)、pvalue_G、pvalue_E、V2、V3。

标签: r

解决方案


为此尝试包 dplyr。我希望这是真正的代码,但由于我没有数据框,所以没有运行它。

基本上,我们正在使用 x 和 b 进行内部连接(因此只保留具有匹配 rs_ID 和 V4 的行),然后选择我们想要的列。

图书馆(dplyr)

x %>%
  inner_join(b, by = c("rs_id" = "V4")) %>%
  select(gene_id, chr, rs_id, pvalue_G, pvalue_E, V2, V3)

推荐阅读