r - 如何考虑合并/加入添加多余的行?
问题描述
我有一个基因数据集,我映射到一种蛋白质 ID。然后我试图在另一个第二个数据集中找到那些蛋白质 ID。第二个数据集非常大,有 11759454 行。我尝试通过合并或加入来查找匹配的蛋白质 ID,例如:
testdf <- join(proteindf, genes) #or:
testdf <- merge(proteindf, genes, by.all='protein_id' , all.x=TRUE)
这些运行但行顺序随着testdf
大小增长到 11775850 的行数而变得不合适。
我不知道如何解决这个问题,我有生物学背景,并且尝试过运行 sql 版本的合并,但这会无限期地运行而没有完成。
我无法提供完整数据,但通常数据集如下所示:
#gene dataset:
protein_id Gene
1 9606.ENSP00000378868 A1CF
2 9606.ENSP00000384794 A4GALT
3 9606.ENSP00000324842 AACS
4 9606.ENSP00000000233 ARF5
#proteindf:
protein_id protein_id1 coexpression experiments database
1 9606.ENSP00000000233 9606.ENSP00000272298 0 0 0
2 9606.ENSP00000000233 9606.ENSP00000253401 0 0 0
3 9606.ENSP00000000233 9606.ENSP00000401445 0 0 0
4 9606.ENSP00000000233 9606.ENSP00000418915 0 0 0
protein_id 行可以是许多重复项,我认为这会导致问题。
预期输出:
protein_id Gene protein_id1 coexpression experiments database
1 9606.ENSP00000000233 ARF5 9606.ENSP00000272298 0 0 0
2 9606.ENSP00000000233 ARF5 9606.ENSP00000253401 0 0 0
3 9606.ENSP00000000233 ARF5 9606.ENSP00000401445 0 0 0
4 9606.ENSP00000000233 ARF5 9606.ENSP00000418915 0 0 0
我随后使用合并创建另一个数据集(将基因的 protein_id 重命名为 protein_id1)以获取“protein_id1”列的基因名称,这也给了我相同的 11775850 行。任何有助于理解这一点的帮助将不胜感激。
解决方案
由于缺乏编码示例,目前尚不清楚问题到底是什么。
首先,by.all
应该是by
。其次,您看到观察次数增加的原因只能是 inprotein_id
中的某些值有几个匹配项gene
(例如,id 在基因数据集中不是唯一的)。
testdf[duplicated(testdf$protein_id),]
我们可以使用or提取重复的行:
genes$growid <- seq_len(nrow(genes))
proteindf$prowid <- seq_len(nrow(proteindf))
mdf <- merge(proteindf, merge, by = 'protein_id', all.x = TRUE)
gids_dups <- duplicated(mdf$growid)
pids_dups <- duplicated(mdf$prowid)
#Gene duplicate rows
mdf[gids_dups, ]
#protein duplicate rows (should be the same)
mdf[pids_dups, ]
这个问题的解决方案取决于你的数据集,如果它确实是一个问题。
推荐阅读
- javascript - 从脚本中的var提取数据并使用python将pdf下载到文件夹
- sql-server - 由于错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR 0xC0049067 和 DTS_E_PROCESSINPUTFAILED 0xC0209029 导致派生列失败
- javascript - ScrollTo 不工作
- javascript - Angularjs 在 ng-repeat 中迭代
- python - Python将ips列表转换为网络列表
- powerbi - 矩形覆盖使它们隐藏的视觉对象 Power BI Desktop
- sharepoint - 创建 SharePoint 测验 OOTB
- sql - 计算每月销售额增加/减少
- ios - 如何根据点击的 UITableView 行更改方法的参数?
- docker - 如何使用 Docker-Compose 中的 URL 访问服务