对非常大的数据帧进行外部处理,从而达到 R 中的内存使用量

问题描述 投票:0回答:1

所以我有三个包含此信息的数据框

> dim(result)
[1] 652265     10
> dim(rat)
[1] 107190      2
> dim(mouse)
[1] 219016      2
> names(result)
 [1] "ensembl_gene_id"                             "ensembl_transcript_id"                      
 [3] "external_gene_name"                          "mmusculus_homolog_ensembl_gene"             
 [5] "mmusculus_homolog_associated_gene_name"      "rnorvegicus_homolog_ensembl_gene"           
 [7] "rnorvegicus_homolog_associated_gene_name"    "celegans_homolog_ensembl_gene"              
 [9] "celegans_homolog_associated_gene_name"       "celegans_homolog_ensembl_gene_transcript_id"
> names(rat)
[1] "rnorvegicus_homolog_ensembl_gene"          "rnorvegicus_homolog_ensembl_transcript_id"
> names(mouse)
[1] "mmusculus_homolog_ensembl_gene"          "mmusculus_homolog_ensembl_transcript_id"

我的数据框是这样的

head(result)
  ensembl_gene_id ensembl_transcript_id external_gene_name mmusculus_homolog_ensembl_gene
1 ENSG00000198888       ENST00000361390             MT-ND1             ENSMUSG00000064341
2            <NA>                  <NA>               <NA>                           <NA>
3 ENSG00000198804       ENST00000361624             MT-CO1             ENSMUSG00000064351
4 ENSG00000198712       ENST00000361739             MT-CO2             ENSMUSG00000064354
5            <NA>                  <NA>               <NA>                           <NA>
6            <NA>                  <NA>               <NA>                           <NA>
  mmusculus_homolog_associated_gene_name rnorvegicus_homolog_ensembl_gene
1                                 mt-Nd1               ENSRNOG00000030644
2                                   <NA>                             <NA>
3                                 mt-Co1               ENSRNOG00000034234
4                                 mt-Co2               ENSRNOG00000030371
5                                   <NA>                             <NA>
6                                   <NA>                             <NA>
  rnorvegicus_homolog_associated_gene_name celegans_homolog_ensembl_gene
1                                   Mt-nd1                WBGene00010959
2                                     <NA>                          <NA>
3                                   Mt-co1                WBGene00010964
4                                   Mt-co2                WBGene00010965
5                                     <NA>                          <NA>
6                                     <NA>                          <NA>
  celegans_homolog_associated_gene_name celegans_homolog_ensembl_gene_transcript_id
1                                                                         MTCE.11.1
2                                  <NA>                                        <NA>
3                                 ctc-1                                   MTCE.26.1
4                                 ctc-2                                   MTCE.31.1
5                                  <NA>                                        <NA>
6                                  <NA>                                        <NA>
> head(rat)
  rnorvegicus_homolog_ensembl_gene rnorvegicus_homolog_ensembl_transcript_id
1               ENSRNOG00000033395                        ENSRNOT00000044979
2               ENSRNOG00000070901                        ENSRNOT00000119508
3               ENSRNOG00000031391                        ENSRNOT00000045306
4               ENSRNOG00000067904                        ENSRNOT00000099225
5               ENSRNOG00000067904                        ENSRNOT00000099225
6               ENSRNOG00000067904                        ENSRNOT00000099225
> head(mouse)
  mmusculus_homolog_ensembl_gene mmusculus_homolog_ensembl_transcript_id
1             ENSMUSG00000064341                      ENSMUST00000082392
2             ENSMUSG00000064345                      ENSMUST00000082396
3             ENSMUSG00000064351                      ENSMUST00000082402
4             ENSMUSG00000064354                      ENSMUST00000082405
5             ENSMUSG00000064356                      ENSMUST00000082407
6             ENSMUSG00000064357                      ENSMUST00000082408

我尝试了基于 sqldf 的解决方案,因为当我尝试时 dplyr 卡住了

joined_data <- sqldf("
    SELECT *
    FROM result
    LEFT OUTER JOIN rat ON result.rnorvegicus_homolog_ensembl_gene = rat.rnorvegicus_homolog_ensembl_gene
    LEFT OUTER JOIN mouse ON result.mmusculus_homolog_ensembl_gene = mouse.mmusculus_homolog_ensembl_gene
")

问题是它刚刚达到了我所拥有的系统的上限

现在,如果有任何建议或帮助,我们将非常感激,那么执行相同操作的优化方法是什么

r outer-join sqldf full-outer-join
1个回答
0
投票

对于这种大小的数据集,您将无法简单地以简单的方式连接数据并继续以交互方式处理它。最好的方法取决于您的期望。

也许您需要在样品中工作。也许将数据分割成可管理大小的块。也许将它们加载到 Spark 实例中。或者可以使用 SQL 执行您需要的计算。

如果您想要的只是连接的数据,您只需将它们加载到数据库中,执行连接,然后导出为 CSV 或其他格式。无需将它们加载到数据框中。

说出您的意图,其他人可以更好地帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.