合并R中的文件并保留我匹配的列?

合并R中的文件并保留我匹配的列?,r,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

我有两个巨大的数据表:

> 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。

为此尝试使用包dplyr。我希望这是真正的代码,但没有运行它,因为我没有数据帧

基本上,我们使用x和b进行内部联接(因此只保留具有匹配的rs_ID和V4的行),然后选择所需的列

图书馆(dplyr)


嗨,我得到:>x%>%+内部连接(b,by=c(“rs\u id”=“V4”)%>%+选择(gene\u id,chr,rs\u id,pvalue,G,pvalue,E,V2,V3)错误:意外输入:“内部连接(b,by=c(“rs\u id”=“V4”)%>%select(gene\u id,chr,rs\u id,pvalue,“哎哟,我想我错过了一个结束语”)。现在编辑它。>x%>+内部连接(b,by=c(“rs\u”)%%>%%+select(gene_-id,chr,rs_-id,pvalue,G,pvalue,E,V2,V3)错误:在“内部连接(b,by=c(“rs_-id”=“V4”))%%>%select(gene_-id,chr,rs_-id,pvalue)”中输入了意外信息:by=c(“rs_-id”=“V4”)哦,再次抱歉…pvalue后面的逗号,加载数据,测试数据,应该可以工作。您的标题集没有重叠的ID,因此我得到0行。建议在代码标记中发布预期的输出。
x %>%
  inner_join(b, by = c("rs_id" = "V4")) %>%
  select(gene_id, chr, rs_id, pvalue_G, pvalue_E, V2, V3)