【问题标题】:Match and replace row values across two dataframes跨两个数据帧匹配和替换行值
【发布时间】:2022-01-09 16:05:21
【问题描述】:

我正在尝试将 entrezgene_accession 名称替换为 entrezgene_id,但我无法弄清楚。
想法是将df1中的cd37catb等基因名称替换为df2中的entrezgene_id
我一直在尝试使用 dplyr 组合数据集,但没有奏效。

# df1: 2,002 × 1
   id       
   <chr>    
 1 106590043
 2 cd37     
 3 106577144
 4 106561987
 5 106569503
 6 106571198
 7 106573872
 8 106601676
 9 106612275
10 catb     
# … with 1,992 more rows


# df2: 426 × 2
    entrezgene_accession entrezgene_id
    <chr>                <chr>        
 37 catb                 100195493    
 38 catk                 100195370    
 39 catl1                100286607    
 40 cats                 100196462    
 41 cav2                 106573118    
 42 cav2                 100196537    
 43 cb055                100306867    
 44 cbx6                 106591466    
 45 ccdc178              106569132    
 46 ccdc84               106603745    
 47 ccm2                 106571003    
 48 ccnb1                106563318    
 49 ccnd1                100306852    
 50 ccr3                 100380477    
 51 ccr6                 100194943    
 52 cd164                106607963    
 53 cd37                 100195746      
 # … with 416 more rows

【问题讨论】:

    标签: r replace match


    【解决方案1】:

    来自 dplyr 的left_join 可以帮助解决问题

    library(dplyr)
    
    df1<-tibble::tribble(
                   ~id,
           "106590043",
                "cd37",
                "catb"
           )
    
    df2<-tibble::tribble(
           ~entrezgene_accession, ~entrezgene_id,
                          "catb",     "100286607",
                          "catk",     "100195370",
                         "catl1",     "100286607",
                          "cd37",     "100195746"
           )
    
    df_combined<-df1 %>%
      left_join(df2, by=c("id"="entrezgene_accession")) %>%
      mutate(complete_id=if_else(is.na(entrezgene_id),id,entrezgene_id))
    
    df_combined
    #> # A tibble: 3 × 3
    #>   id        entrezgene_id complete_id
    #>   <chr>     <chr>         <chr>      
    #> 1 106590043 <NA>          106590043  
    #> 2 cd37      100195746     100195746  
    #> 3 catb      100286607     100286607
    

    reprex package (v2.0.1) 于 2022-01-09 创建

    【讨论】:

      猜你喜欢
      • 2018-11-29
      • 2021-07-04
      • 2021-03-21
      • 2019-08-15
      • 2020-03-15
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      相关资源
      最近更新 更多