1.数据类型、数据结构及其操作
时间:2019.7.2
学习内容:
1.vector creat
常用函数:c(),seq(),rep(),paste()和paste0()
2.vector change
索引:[] (位置、名字、逻辑值)
查看向量中元素个数:length()
Table()
3.vector math
运算:a+b、a-b、a/b、a*b、a%%b#(取余)、a%/%b#(取整)、-a
两个向量的比较:> >= < <= ==(相等) !=(不相等)
4.matrix
创建数据框:
b<-seq(1,20,1) dim(b)<-c(5,4)
d<-matrix(b,nrow=5,ncol=4)
赋值:
X[2,2]<-3
5.dataframe
创建数据框(用例子说明)
date<-c(21,22,23,35,52)
plan<-c('mon','tue','wed','thur','fri')
color<-c('green','red','white','black','purple')
April<-data.frame(date,plan,color)
索引
用位置索引:April[1,2];用名称索引:April[,'plan'];用逻辑值索:April[c(T,F,T,T,F),]
date
6.List
创建列表(举例说明)
g<-'Hello world'
h<-1:5
j<-matrix(1:10,nrow=5,ncol=2)
f<-c('mon','tue','wed')
r_list<-list(flag=g,h,j,f)
索引
用名字索引:r_list$flag
双中括号索引:r_list[[1]]
7.Read a file
读入文件:d<-read.csv('xxx.txt.gz',comment.char = '!',sep='\t',row.names = 1) ###comment.char = '!'表示!为注释信息,row.names = 1表示将第一列作为行名
f<-read.table('xxx.txt.gz', comment.char = '!',header=T,row.names = 1)
读出文件:write.table(x = f,file = 'xxx.txt')
write.csv(x = f,file = 'xxx.csv')
存成Rdata格式:
save(f,file = 'xxx.Rdata')
rm(list=ls())
load('xxx.Rdata')
8.Packages
R包安装三种途径:
1.CRAN
nstall.packages('')
2.Biocductor
install.packages('BiocManger')
BiocManager::install()
3.github
install.packages('devtools')
devtools::install()
9.for、apply function
for循环:如
n = 4
a=2
for(i in 1:n){
a[i+1] = 2a[i]
#######a[1+1] = 2a[1]
apply循环:apply(x,1,function)
function自定义,如:y<-function(x){
mean_row<-mean(as.numeric(c(x[1],x[3])))
str_paste<-paste0(x[2],x[4])
result<-c(mean_row,str_paste)
return(result)
则:tmp<-apply(x,1,y)
10.Plots
基础包作图函数:
plot(1:10,1:10,type = 'l')#type可以选择
plot(1:10,xlim = c(0,10),ylim = c(0,10))#自定义x轴和y轴
ggplot2作图
11.Id conversion
创建tmp变量:tmp<-()
使用strsplit函数,生成结果为列表:strsplit(tmp,split=',')
使tmp转变为数据框:tmp <- as.data.frame(strsplit(tmp,split=',')[[1]])
对tmp列进行命名:colnames(tmp)<-c('probe_id')
使用hgu133a.db包
symbol: ids <- toTable(hgu133aSYMBOL)
ensemble:ids<-toTable(hgu133aENSEMBL)
merge函数:f<-merge(ids,tmp,by='probe_id')
macth函数:ids[match(tmp$probe_id,ids$probe_id),]
2.merge函数的使用(根据共同列或行将两个数据框关联起来)
在R中可以使用merge()函数去关联数据框,其强大之处在于在两个不同的数据框中标识共同的列或行。
merge()最简单的形式为获取两个不同数据框中交叉部分。
merge()函数有很多参数,看起来非常吓人。但他们都几中类型参数有关:
1.x: 第一个数据框.
2.y: 第二个数据框.
3.by, by.x, by.y: 指定两个数据框中匹配列名称。缺省使用两个数据框中相同列名称。
4.all, all.x, all.y: 指定合并类型的逻辑值。缺省为false,all=FALSE (仅返回匹配的行).
最后一组参数最后一组参数all, all.x, all.y需要进一步解释,决定合并类型。
merge() 函数支持4种类型数据合并:
Natural join: 仅返回两数据框中匹配的数据框行,参数为:all=FALSE.
Full outer join: 返回两数据框中所有行, 参数为: all=TRUE.
Left outer join: 返回x数据框中所有行以及和y数据框中匹配的行,参数为: all.x=TRUE.
Right outer join: 返回y数据框中所有行以及和x数据框匹配的行,参数为: all.y=TRUE.
如何实现完整合并(full outer join)
merge(cold.states, large.states, all=TRUE)
Name Frost Area
1 Alaska 152 566432
2 Arizona NA 113417
3 California NA 156361
....
13 Texas NA 262134
14 Vermont 168 NA
15 Wyoming 173 NA
两个数据框有不同的名称,所以R基于两者state的name进行匹配。Frost来自cold.states数据框,Area来自large.states.
上面代码执行了完整合并,填充未匹配列值为NA。
3.绘制箱图、频数图、密度图
1.用基本函数绘制
箱图:boxplot(e[,1]~plate)
频数图:hist(e1[,1])
密度图:density(e[,1]) plot(density(e[,1]))
2.用ggplot2绘制
箱图:ggplot(e1,aes(x=plate,y=MBases))+geom_boxplot()
频数图:ggplot(e1,aes(x=MBases))+geom_histogram(bins = 30,binwidth = 1)
密度图:ggplot(e1,aes(x=MBases))+geom_density()
3.用ggpubr绘制
箱图:ggboxplot(e1,x = 'plate',y = 'MBases')
频数图:gghistogram(e1,x='MBases',bins=30)
密度图:ggdensity(e1,x='MBases')
4.ID转换
1.org.Hs.eg.db包(功能:可以用来进行基因ID的转换)
Description:org.Hs.eg.db为注释包。这是一个生物体特有的包。目的是提供包名org.Hs.eg.db第二部分中缩写的物种的详细信息。这个包每两年更新一次。
org.Hs.eg.db包中文件解压后,其中第一列是物种id,第二列是GeneID, 第三列是Ensemble_geneID,第四列是RNA_id,第五列是Ensemble_RNAid,第六列是protein_id。因此这些R包的功能极有可能就是利用NCBI或ensem等数据库中的这些文件信息,通过一系列的脚本实现了基因ID之间进行转换
> ls("package:org.Hs.eg.db")
[1] "org.Hs.eg" "org.Hs.eg.db" "org.Hs.eg_dbconn"
[4] "org.Hs.eg_dbfile" "org.Hs.eg_dbInfo" "org.Hs.eg_dbschema"
[7] "org.Hs.egACCNUM" "org.Hs.egACCNUM2EG" "org.Hs.egALIAS2EG"
[10] "org.Hs.egCHR" "org.Hs.egCHRLENGTHS" "org.Hs.egCHRLOC"
[13] "org.Hs.egCHRLOCEND" "org.Hs.egENSEMBL" "org.Hs.egENSEMBL2EG"
[16] "org.Hs.egENSEMBLPROT" "org.Hs.egENSEMBLPROT2EG" "org.Hs.egENSEMBLTRANS"
[19] "org.Hs.egENSEMBLTRANS2EG" "org.Hs.egENZYME" "org.Hs.egENZYME2EG"
[22] "org.Hs.egGENENAME" "org.Hs.egGO" "org.Hs.egGO2ALLEGS"
[25] "org.Hs.egGO2EG" "org.Hs.egMAP" "org.Hs.egMAP2EG"
[28] "org.Hs.egMAPCOUNTS" "org.Hs.egOMIM" "org.Hs.egOMIM2EG"
[31] "org.Hs.egORGANISM" "org.Hs.egPATH" "org.Hs.egPATH2EG"
[34] "org.Hs.egPFAM" "org.Hs.egPMID" "org.Hs.egPMID2EG"
[37] "org.Hs.egPROSITE" "org.Hs.egREFSEQ" "org.Hs.egREFSEQ2EG"
[40] "org.Hs.egSYMBOL" "org.Hs.egSYMBOL2EG" "org.Hs.egUCSCKG"
[43] "org.Hs.egUNIGENE" "org.Hs.egUNIGENE2EG" "org.Hs.egUNIPROT"
> g2s <- toTable(org.Hs.egSYMBOL)
> g2e <- toTable(org.Hs.egENSEMBL)
2.hgu133a.db包
Description:hgu133a.db为注释包。此软件包的目的是提供关于hgu133a平台的详细信息。这个包每两年更新一次。
> ls("package:hgu133a.db")
[1] "hgu133a" "hgu133a.db" "hgu133a_dbconn"
[4] "hgu133a_dbfile" "hgu133a_dbInfo" "hgu133a_dbschema"
[7] "hgu133aACCNUM" "hgu133aALIAS2PROBE" "hgu133aCHR"
[10] "hgu133aCHRLENGTHS" "hgu133aCHRLOC" "hgu133aCHRLOCEND"
[13] "hgu133aENSEMBL" "hgu133aENSEMBL2PROBE" "hgu133aENTREZID"
[16] "hgu133aENZYME" "hgu133aENZYME2PROBE" "hgu133aGENENAME"
[19] "hgu133aGO" "hgu133aGO2ALLPROBES" "hgu133aGO2PROBE"
[22] "hgu133aMAP" "hgu133aMAPCOUNTS" "hgu133aOMIM"
[25] "hgu133aORGANISM" "hgu133aORGPKG" "hgu133aPATH"
[28] "hgu133aPATH2PROBE" "hgu133aPFAM" "hgu133aPMID"
[31] "hgu133aPMID2PROBE" "hgu133aPROSITE" "hgu133aREFSEQ"
[34] "hgu133aSYMBOL" "hgu133aUNIGENE" "hgu133aUNIPROT"
> a <- toTable(hgu133aSYMBOL)
3.CLL包
1.描述:CLL包包含慢性淋巴细胞白血病(CLL)基因表达数据。CLL数据有24个样本,按照疾病进展分为进展性或稳定型。
2.Examples:data(sCLLex)
3.获得表达矩阵:> exprSet <- exprs(sCLLex)###获得其表达矩阵
4.hgu95av2.db包
1.Description:hgu95av2.db为注释包。这个包的目的是提供关于hgu95av2平台的详细信息。
ls("package:hgu95av2.db")
[1] "hgu95av2" "hgu95av2.db" "hgu95av2_dbconn"
[4] "hgu95av2_dbfile" "hgu95av2_dbInfo" "hgu95av2_dbschema"
[7] "hgu95av2ACCNUM" "hgu95av2ALIAS2PROBE" "hgu95av2CHR"
[10] "hgu95av2CHRLENGTHS" "hgu95av2CHRLOC" "hgu95av2CHRLOCEND"
[13] "hgu95av2ENSEMBL" "hgu95av2ENSEMBL2PROBE" "hgu95av2ENTREZID"
[16] "hgu95av2ENZYME" "hgu95av2ENZYME2PROBE" "hgu95av2GENENAME"
[19] "hgu95av2GO" "hgu95av2GO2ALLPROBES" "hgu95av2GO2PROBE"
[22] "hgu95av2MAP" "hgu95av2MAPCOUNTS" "hgu95av2OMIM"
[25] "hgu95av2ORGANISM" "hgu95av2ORGPKG" "hgu95av2PATH"
[28] "hgu95av2PATH2PROBE" "hgu95av2PFAM" "hgu95av2PMID"
[31] "hgu95av2PMID2PROBE" "hgu95av2PROSITE" "hgu95av2REFSEQ"
[34] "hgu95av2SYMBOL" "hgu95av2UNIGENE" "hgu95av2UNIPROT"
5.TCGA数据库
TCGA是美国(画外音,又是美国,而且又是免费)国家癌症研究所(National Cancer Institute)和美国人类基因组研究所(National Human Genome Research Institute)共同监督的一个项目,旨在应用高通量的基因组分析技术,以帮助人们对癌症有个更好的认知,从而提高对于癌症的预防、诊断和治疗能力。
作为目前最大的癌症基因信息数据库,TCGA的全面不仅仅体现在众多癌型上,还体现在多组学数据,包括基因表达数据、miRNA表达数据、拷贝数变异、DNA甲基化、SNP,而相对于GEO数据库,TCGA最大的优势是丰富且规范的临床数据,以及针对每种癌型的大样本量,简直令人无法抗拒!
注意,TCGA现在的数据均收录在GDC中,而GDC同时也收录了TARGET数据库的数据,在GDC中可以通过GDC Data Portal 和 GDC Legacy Archive 这两种方式获得TCGA数据。
作者:Stone_Stan4d
链接:https://www.jianshu.com/p/3bd31fafb0d2
来源:
著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
6.生存分析
需使用网站:OncoLnc(http://www.oncolnc.org/)
网站使用方法
进入网站http://www.oncolnc.org/,输入你想要的基因
找到你想要的癌症类型,点击进入
输入高、低两个数值
点击[click here],进行下载
将其保存为CSV格式
8.GEO数据库
1.Description:
GEO数据库全称GENE EXPRESSION OMNIBUS,是由美国国立生物技术信息中心NCBI创建并维护的基因表达数据库。它创建于2000年,收录了世界各国研究机构提交的高通量基因表达数据,也就是说只要是目前已经发表的论文,论文中涉及到的基因表达检测的数据都可以通过这个数据库中找到。
2.网址
http://www.ncbi.nlm.nih.gov/geo
3.GEOquery包使用说明书
https://www.jianshu.com/p/0d32fd410bcf
下载数据:
> f <- ' GSE17215_eSet.Rdata '
> if(!file.exists(f)){
+ gset <- getGEO('GSE17215', destdir=".",
+ AnnotGPL = F, ## 注释文件
+ getGPL = F) ## 平台文件
+ save(gset,file=f) ## 保存到本地
+ }
> load('GSE17215_eSet.Rdata') ## 载入数据
9.SRA数据库
10.细节知识点
1.查看内置数据集
data()
查看某一数据集
rivers
2.根据条件分组(用逻辑值分组):
e1 <- e[e$plate=='0048']
e1<-da.data.frame(e1)
3.提取某一数据框中的两列e<- merge[,c("MBases","Title")]
或使用$符号,把两列取出来再合并a<-data.frame(a,b)
4.给数据框新加一列:
e1 <- e[e$plate=='0048']###(生成的为一维向量)
class(e1)
dim(e1) <- c(384,3)###生成矩阵
5.查看包:ls("package:org.Hs.eg.db")
6.获得表达矩阵:exprSet <- exprs(sCLLex)###获得其表达矩阵
7.神奇操作:
> rm(list = ls())###魔法操作,一键清空
> options(stringsAsFactors = F)
8.使用GEOquery包下载数据
> f <- ' GSE17215_eSet.Rdata '
> if(!file.exists(f)){
+ gset <- getGEO('GSE17215', destdir=".",
+ AnnotGPL = F, ## 注释文件
+ getGPL = F) ## 平台文件
+ save(gset,file=f) ## 保存到本地
getGEO('GSE17215', destdir=".",
+ AnnotGPL = F, ## 注释文件
+ getGPL = F) ## 平台文件
如果用后者下载文件的话,下载的是一个压缩包;而执行if操作,下载的压缩包可以解压并保存为RData文件格式。
9.
> dat <- dat[ids$probe_id,]###将dat与ids中的Probe_id相匹配,仅保留与ids中重合的值
> dat <- dat[ng,]###返回dat中与ng重合的值
此函数的意义:将dat与ids中的Probe_id相匹配,返回与ids中重合的值
10.
11.将一列赋值给dat的行名
> rownames(dat)<-ids$symbol
12.
table(ng %in% rownames(dat))###ng与dat的行名重合的值
意义:ng在dat的行名重合的值
13.
> pheatmap::pheatmap(M,annotation_col = tmp)###用来注释分组
annotation_row:指定热图左侧显示的注释的数据帧。每一行定义特定行的特性。数据和注释中的行使用相应的行名称进行匹配。注意,配色方案考虑了变量是连续的还是离散的。
annotation_col:与annotation_row类似,作用于列。
14.
R中自带数据集:内置数据集
安装的R包中带的数据集:外置数据集