匹配和替换两个数据框中的行值
Match and replace row values across two dataframes
我正在尝试用 entrezgene_id 替换 entrezgene_accession 名称,但我想不出来出来了。
想法是将 df1 中的 cd37 和 catb 等基因名称替换为它们的 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
我正在尝试用 entrezgene_id 替换 entrezgene_accession 名称,但我想不出来出来了。
想法是将 df1 中的 cd37 和 catb 等基因名称替换为它们的 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
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