匹配和替换两个数据框中的行值

Match and replace row values across two dataframes

我正在尝试用 entrezgene_id 替换 entrezgene_accession 名称,但我想不出来出来了。
想法是将 df1 中的 cd37catb 等基因名称替换为它们的 entrezgene_id 是在 df2.[​​=18=] 我一直在尝试使用 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
来自 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