大师兄带你学生信—系列#2—GEO数据下载及整理

- 重置工作环境 #每次打开R Studio,先运行这三行代码
Sys.setenv(LANGUAGE='en') #设置报错为英文
options(stringsAsFactors = F)
rm(list =Is())
2.设置工作路径
setwd('D:/R/GEO') #设置工作路径(此步需要根据自己文件件进行修改);
3.加载所需R包 #没有这些R包的话,参考系列1进行下载
library(GEOquery)
library(dplyr)
library(BiocManager)
library(tidyverse)
4.下载GEO数据 #下载前需要先查询确定GEO数据集编号
gset=getGEO(GEO ='GSE12417',destdir ='.', getGPL = T ) #此处以GSE12417为例
#常常由于网速原因,此步耗时较久,可以设置此处gsetGPL = F,后面通过手动登录GEO下载GPL文件
5.保存下载好的GEO数据#此步为了避免下次打开R时需要反复下载
save(gset,file = ' D:/R/GEO.rdata') #将下载的数据保存为Rdata的格式
6.加载保存的GEO数据
load(' D:/R/GEO.rdata') #下次打开的话,可以直接运行这行代码加载数据
7.查看数据名称
names(gset) #查看gset数据的名字
8.提取表达矩阵
s2 <- gset[[2]]
exp <- s2@assayData$exprs #将s2的assayData中的exprs提取并赋值为exp
9.下载并整理平台文件
library(data.table) #加载读取文件所需R包
anno <- fread('GPL96-57554.txt',header = T,data.table = F) # GSE12417对应平台文件为GPL96-57554
x1 <- colnames(anno) #查看anno的列名
x2 <- rownames(anno) #查看anno的行名
gene <- anno[,c(1,11)] #将anno的第1和11列提取,并赋值给gene
x1 <-gene$`Gene Symbol` #将gene的`Gene Symbol’提取,并赋值给x1
a1 <- strsplit(x1,split = ' /// ',fixed = T)#切割函数strsplit,利用切割函数将x1的' /// '进行切割;
gene.all <- sapply(a1, function(x){x[1]}) #sapply循环函数,保留a1中的第一个
a3 <- data.frame(anno$ID,gene.all) #合并两个数据为数据框
10.用平台文件对表达矩阵探针或转录本注释为Gene Symbol
exp1 <- as.data.frame(exp) #将exp文件转换为数据库,并赋值exp1
exp.anno <- merge(x=a3,y=exp1,by.x =1,by.y=0) #利用merge函数将exp1和anno文件进行合并,x表示合并后在前面,by.x =0意思是x与y中相同的是x的第0列,by.y='ID'意思是x与y中相同的是y的'ID'这一列
#整理表达矩阵
row.names(exp.anno) <- exp.anno$gene.all #将gene.all那一列作为行名,这里会报错,因为一个基因名会对应多个探针名
#去重复
exp2 <- distinct(exp.anno,gene.all,.keep_all =T) #dplyr包里的distinct函数可以将行名中重复值去除,.keep_all =T代表保留全部列。此函数是只保留第一个值,其余的重复值去除
row.names(exp2) <- exp2$gene.all #这里还是会报错,因为存在缺失值
#去除缺失值
exp3 <- na.omit(exp2)
#将基因名作为行名
row.names(exp3) <- exp3$gene.all
exp4 <- exp3[,-c(1,2)] # 将exp3的第1和2列去除,并赋值给exp4。
write.csv(exp4,file = 'exp4.csv') #将exp4保存到工作路径中。
这个先给出的是整理好的R代码,小伙伴们可以自己动手先做一遍,遇到问题先记或在简书网站搜索进行解决。后续也将分享系列视频教程,带着大家实操,同时为大家解惑,敬请关注!
最后编辑于 2022-10-09 · 浏览 3946