前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【R语言】根据映射关系来替换数据框中的内容

【R语言】根据映射关系来替换数据框中的内容

作者头像
生信交流平台
发布2022-09-21 17:49:19
3.8K0
发布2022-09-21 17:49:19
举报

前面给大家介绍过☞R中的替换函数gsub,还给大家举了一个临床样本分类的具体例子。今天我们接着来分享一下如何根据已有的映射关系来对数据框中的数据进行替换。例如将数据框中的转录本ID转换成基因名字。我们直接结合这个具体的例子来进行分享。

假设我们手上有这个一个转录本ID和基因名字之间的对应关系,第一列是转录本ID,第二列是基因名字

然后我们手上还有一个这样的bed文件,里面是对应的5个基因的CDs区域在基因组上的坐标信息。

接下来我们要做的就是将第四列中的注释信息,从转录本ID替换成相应的基因名字。我们给大家分享三种不同的方法。

首先我们做准备工作,读入这两个文件,会用到前面讲过的正则表达式

代码语言:javascript
复制
#读入转录本和基因名之间的映射关系
mapping=read.table("id_mapping.txt",sep="\t",row.names=1)
#读入CDs区域坐标文件
bed=read.table("5gene_CDs.bed",sep="\t")

#从第四列提取转录本信息,这里用了正则表达式,
#括号中匹配到的内容会存放在\\1中
NM=gsub("(NM_.*?)_.*","\\1",bed$V4)
#获取转录本号对应的基因名字
symbol=mapping[NM,1]

方法一、使用最原始的gsub函数

代码语言:javascript
复制
#先将bed文件中的内容存放在result1中
result1=bed
#将NM开头的转录本号后面的内容提取出来,然后跟相应的基因名字贴到一起
#直接替换result的第四列注释信息
result1$V4=paste0(symbol,gsub("NM_.*?(_.*$)","\\1",bed$V4))
#保存结果到5gene_CDs_symbol.bed文件中
write.table(file="5gene_CDs_symbol.bed",result1,quote=F,sep="\t",col.names=F,row.names=F)
#查看result1的前几行
head(result1)

可以发现第四列的注释信息中,转录本ID已经全部转换成了基因名字

方法二、使用stringi函数

代码语言:javascript
复制
#如果没有安装过stringi这个包,先运行下一行命令进行安装
#BiocManager::install("stringi")
library(stringi)
#先将bed文件中的内容存放在result2中
result2=bed
#使用stri_replace_all_regex进行替换
#将rownames(mapping),即转录本ID替换成mapping[[1]],即基因名字
result2$V4 <- stri_replace_all_regex(bed$V4, rownames(mapping), mapping[[1]],vectorize=F)
#查看结果
head(result2)

方法三、使用mgsub函数

前面讲使用R获取DNA的反向互补序列的时候也用到过这个函数

代码语言:javascript
复制
#如果没有安装过mgsub这个包,先运行下一行命令进行安装
#BiocManager::install("mgsub")
library(mgsub)
#先将bed文件中的内容存放在result3中
result3=bed
#使用mgsub进行替换,将rownames(mapping),即转录本ID替换成mapping[[1]],即基因名字
result3$V4=mgsub(bed$V4, rownames(mapping), mapping[[1]])
#查看结果
head(result3)

今天的分享就先到这里,希望大家能有所收获。

参考资料:

☞R中的替换函数gsub

正则表达式

使用R获取DNA的反向互补序列

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档