前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你肉眼能看几万个基因名字判断有没有重复的基因?

你肉眼能看几万个基因名字判断有没有重复的基因?

作者头像
生信技能树
发布2019-08-13 15:23:08
2.2K0
发布2019-08-13 15:23:08
举报
文章被收录于专栏:生信技能树生信技能树

在单细胞课程售后群看到提问,一个表格直接读进来是这样,如下图,

他想把第一列变成行号,就加了一个参数:row.names=1 结果报错了。 有趣的是他的提问:行是基因号,怎么会有重复的行呢? 我的回答,当然是标题啦:你肉眼能看几万个基因名字判断有没有重复的基因?

基因重复了的表达矩阵如何去冗余

这里其实应该是对于基因重复了的表达矩阵,最常见的情况介绍GEO数据挖掘的芯片表达矩阵处理,通常多个探针会对应同一个基因,我们应该是如何去冗余呢?标准是什么

这里我们不回答标准是什么,但是给出去冗余的代码,多个基因重复了的,我们只保留表达量最大的。

下面代码的dat就是一个很简单的表达矩阵,你可以任意GEO数据挖掘获得。

代码语言:javascript
复制
# 每次都要检测数据
dat[1:4,1:4]  
library(hgu133plus2.db)
ids=toTable(hgu133plus2SYMBOL) #toTable这个函数:通过看hgu133plus2.db这个包的说明书知道提取probe_id(探针名)和symbol(基因名)的对应关系的表达矩阵的函数为toTable
head(ids) #head为查看前六行
dat=dat[ids$probe_id,] #ids提取出probe_id这列,这列的每行都为一个探针,接着在dat这个矩阵中,按照刚刚取出的探针所在的行,再取出来组成一个新的矩阵dat,此操纵为取出与注视ids相对于的dat
#保证ids矩阵和dat矩阵长度相等
dat[1:4,1:4] 
ids$median=apply(dat,1,median) #ids新建median这一列,列名为median,同时对dat这个矩阵按行操作,取每一行的中位数,将结果给到median这一列的每一行
ids=ids[order(ids$symbol,ids$median,decreasing = T),]#对ids$symbol按照ids$median中位数从大到小排列的顺序排序,将对应的行赋值为一个新的ids
ids=ids[!duplicated(ids$symbol),]#将symbol这一列去除重复项,'!'为否,即取出不重复的项,去除重复的gene ,保留每个基因最大表达量结果s
dat=dat[ids$probe_id,] #新的ids取出probe_id这一列,将dat按照取出的这一列中的每一行组成一个新的dat
rownames(dat)=ids$symbol#把ids的symbol这一列中的每一行给dat作为dat的行名
##确保两个矩阵长度一致
dat[1:4,1:4]  #保留每个基因ID第一次出现的信息

看起来也不难理解吧,很简单的基础函数而已,都不需要加载杂七杂八的R包。

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

本文分享自 生信技能树 微信公众号,前往查看

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

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

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