使用带有ID的data替换data.frame列,其中对应的名称取自另一个data.frame

时间:2016-09-02 10:24:06

标签: r dataframe

我的数据框df1如下所示:

id          name     type                                           
46        hsa:4052    gene 
50        hsa:7057    gene 
52        hsa:8454    gene 

然后我有第二个数据框df2,如下所示:

entry1    entry2      type       name        value
46         44        PPrel      activation    -->
52         50        PPrel      activation    -->
29         27        PPrel      activation    -->

现在,两个数据框中的公共列是来自df1的{​​{1}}和entry1以及来自entry2的{​​{1}}的ID。我希望我的结果看起来像这样:

df2

所以我想要的是将entry1 entry2 type name value hsa:4052 44 PPrel activation --> hsa:8454 hsa:7057 PPrel activation --> 29 27 PPrel activation --> 中的entry1entry2 id替换为来自df2的相应ID的名称。我尝试合并,但显然合并在这里没有帮助。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

试试这个:

df2[,1:2]<-lapply(df2[,1:2],
           function(x) ifelse(x %in% df1$id,df1$name[match(x,df1$id)],x))
#    entry1   entry2  type       name value
#1 hsa:4052       44 PPrel activation   -->
#2 hsa:8454 hsa:7057 PPrel activation   -->
#3       29       27 PPrel activation   -->