我有一个数据帧
gene_symbols<- c ('ABL1', 'ABL1', 'Abl2', 'Accn1', 'Accn1')
Result_value<- c (1, 4, 5, 5, 2)
df<-data.frame(gene_symbols, Result_value)

在这个gene_symbols的数据框架中有重复,但它是人类和老鼠基因的混合体。
我还有第二个dataframe用作条件查找或字典
humanGene<-c('ABL1', 'ABL2', 'ACCN1')
mouseGene<-c('Abl1', 'Abl2', 'Accn1')
df2<-data.frame(humanGene, mouseGene)

我想在dataframe中创建一个新的列,这是仅有的人类基因之一。如果column1中有人类基因,它就会被保留下来,如果有老鼠基因,它就会被df2中的人类基因所取代。输出应如下所示:

我正在尝试使用条件查找
df$HumanGene <- ifelse(df$gene.symbols %in% df2$mouseGene, df2$humanGene, df$gene.symbols)发布于 2021-05-14 13:04:49
使用join和coalesce:
library(dplyr)
df %>%
left_join(df2, by = c('gene_symbols' = 'mouseGene')) %>%
mutate(humanGene = coalesce(humanGene, gene_symbols))
# gene_symbols Result_value humanGene
#1 ABL1 1 ABL1
#2 ABL1 4 ABL1
#3 Abl2 5 ABL2
#4 Accn1 5 ACCN1
#5 Accn1 2 ACCN1发布于 2021-05-15 01:49:23
我们可以使用fcoalesce
library(data.table)
setDT(df)[df2, humanGene := fcoalesce(humanGene, gene_symbols), on = .(gene_symbols = mouseGene)]https://stackoverflow.com/questions/67529215
复制相似问题