我有一个蛋白质列表,就像df1中给出的
df1 <- data.frame( names = c("Gen1", "Gen2", "Gen3"))我需要使用一个蛋白质表将这些名称更改为ID,它们的关联方式在df2中进行了总结
df2 <- data.frame(
Protein.name = c("Gen1", "Gen2", "Gen3"),
Protein.product = c("id1", "id2" , "id3"))因此,我最终得到了一个蛋白质ID列表,而不是蛋白质名称,如df3中所示
df3 <- data.frame( ID = c("id1", "id2" , "id3"))我试过使用cbind命令,但为了使其工作,两个数据帧应该有相同的行数,但情况并非如此。
发布于 2020-06-10 18:07:29
您可能希望从left_join()包中获得tidyverse:
library(tidyverse)
df1 %>%
left_join(df2, by = c("names" = "Protein.name"))这段代码在df1中获取蛋白质名称,并按顺序从df2提供它们的ID。至于df3,它是:
library(tidyverse)
df3 <- df1 %>%
left_join(df2, by = c("names" = "Protein.name")) %>%
select(ID = Protein.product)( select的最后一行将数据帧列重命名为ID,以获得所需的输出。)
示例:(更改了df1项的顺序以检查其工作情况)
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结果:
ID
1 id3
2 id1
3 id2发布于 2020-06-10 18:06:55
inner_join(df1,df2,by=c("name"="gene")) %>% select(name = name.y)https://stackoverflow.com/questions/62309887
复制相似问题