首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用蛋白质表将名称从蛋白质列表更改为ID

如何使用蛋白质表将名称从蛋白质列表更改为ID
EN

Stack Overflow用户
提问于 2020-06-10 17:46:53
回答 2查看 81关注 0票数 0

我有一个蛋白质列表,就像df1中给出的

代码语言:javascript
复制
df1 <- data.frame(   names = c("Gen1", "Gen2", "Gen3"))

我需要使用一个蛋白质表将这些名称更改为ID,它们的关联方式在df2中进行了总结

代码语言:javascript
复制
df2 <- data.frame(   
Protein.name = c("Gen1", "Gen2", "Gen3"),  
 Protein.product = c("id1", "id2" , "id3"))

因此,我最终得到了一个蛋白质ID列表,而不是蛋白质名称,如df3中所示

代码语言:javascript
复制
 df3 <- data.frame(   ID = c("id1", "id2" , "id3"))

我试过使用cbind命令,但为了使其工作,两个数据帧应该有相同的行数,但情况并非如此。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-10 18:07:29

您可能希望从left_join()包中获得tidyverse

代码语言:javascript
复制
library(tidyverse)
df1 %>%
    left_join(df2, by = c("names" = "Protein.name"))

这段代码在df1中获取蛋白质名称,并按顺序从df2提供它们的ID。至于df3,它是:

代码语言:javascript
复制
library(tidyverse)
df3 <- df1 %>%
    left_join(df2, by = c("names" = "Protein.name")) %>%
    select(ID = Protein.product)

( select的最后一行将数据帧列重命名为ID,以获得所需的输出。)

示例:(更改了df1项的顺序以检查其工作情况)

代码语言:javascript
复制
library(tidyverse)

df1 <- data.frame(names = c("Gen3", "Gen1", "Gen2"))

df2 <- data.frame(   
    Protein.name = c("Gen1", "Gen2", "Gen3"),  
    Protein.product = c("id1", "id2" , "id3")
)

df3 <- df1 %>%
    left_join(df2, by = c("names" = "Protein.name")) %>%
    select(ID = Protein.product)

df3

结果:

代码语言:javascript
复制
    ID
1  id3
2  id1
3  id2
票数 2
EN

Stack Overflow用户

发布于 2020-06-10 18:06:55

代码语言:javascript
复制
inner_join(df1,df2,by=c("name"="gene")) %>% select(name = name.y)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62309887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档