GEO探针转换为symbol

用首先下载GEO数据 有的下载会有几个对象 有的就只有一个 但是不影响 因为GSE就是数据的集合,这几个不同的对象只是测序平台不同而已 这里选择第二个对象

gset = getGEO('GSE12417', destdir=".",getGPL = F)
e2=gset[[2]]   #取下载geo数据list中的第一个对象 可以看见它测序用哪一个GPL平台
               #也可以取其他的对象,反正记住对应的测序GPL平台
expr=e2@assayData[["exprs"]]   #获取表达矩阵
expr=exprs(e2)    #用function直接获得了表达矩阵  二者一样

附三个对象:可以看到第二个对象测序平台为GPL96

去geo数据库搜索GSE12417,往下翻

 点击GPL96进入该界面

download到当前工作路径下 ,然后读入

anno=fread("GPL96-57554.txt",header = T,data.table = F)#一定要data.table=F
gene.1=anno[,c("ID","Gene Symbol")]     #获得探针对应symbol的data.frame
#由于一个探针可能对应多个symbol 而我们只要一个 对应多个时,文件会帮我们把不同的symbol按照不同形式分#开
#检查一下是什么分割  
x1=x[,2]  #将Gene Symbol列提取出来
x1[c(1:25)]  #发现是" // "分割
#先处理symbol
a1=strsplit(x1,split = " // ",fixed = T) #分割symbol
##把分割后的字符串的第一个元素提取出来,合并成为一个新的向量
gene.all = sapply(a1,function(x){x[1]})
a3=data.frame(anno$ID,gene.all) #创建一个id与对应data.frame
#开始merge
expr=as.data.frame(expr)  #由于merge函数是对两个数据框进行merge 而表达矩阵为matrix 要转
exp1=merge(x=a3,y=expr,by.x =1 ,by.y =0 )    #这里有一个小技巧 将a3放前面 exp的第0列就是id号
exp1=merge(x=a3,y=expr,by.x ="anno.ID" ,by.y =0 )  ###用1和"anno.ID"的效果是一样的
#已经merge好了 修改为标准表达矩阵
View(exp1)#对应后发现 不是标准的表达矩阵 因为rownames为1,2,3,4,5......
#所以要让exp1的rownames为gene.symbol
#首先要对gene.symbol这一列进行处理
exp2=distinct(exp1,gene.all,.keep_all = T)  #首先删除重复的基因名 因为多个探针对应同一个基因,这时候行名已经从22283变成了13238
exp3=na.omit(exp2)  #删除缺失值
rownames(exp3)=exp3$gene.all  
View(exp3)
###将多余的删除
exp4=exp3[,-c(1,2)]  #这样就整理好了表达矩阵  标准的表达矩阵为exp4    练习成功

版权声明:本文为marco_luo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。