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.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 %>%
inner_join(b, by = c("rs_id" = "V4")) %>%
select(gene_id, chr, rs_id, pvalue_G, pvalue_E, V2, V3)
推荐阅读
- java - Java和C中相同算法的性能分析
- html - 使用自定义类进行 vmware 清晰深色主题
- javascript - 右键单击嵌套组件触发两次反应
- php - 为什么资产功能在 Symfony 5 中不起作用?
- javascript - 尝试调用模式时无法读取 null 的属性“样式”
- javascript - 如何用 next js 和 redux 实现认证
- javascript - 存储来自嵌套回调函数的响应
- c++ - 无法将 Microsoft Detours 添加到项目(编译错误)
- match - 想知道如何匹配某个字符串 - tcl regexp
- python - 如何将列表中的元素复制到新列表中 [Python 3]