美文网首页
2023-02-02

2023-02-02

作者: Jane_30e5 | 来源:发表于2023-02-01 22:35 被阅读0次

    学习内容

    ##系统报错改为英文
    Sys.setenv(LANGUAGE = "en")
    ##禁止转化为因子
    options(stringsAsFactors = FALSE)
    ##清空环境
    rm(list=ls())
    ###什么是函数,什么是r包,为什么加载r包
    ##安装r包的几个方法
    # 1.在CRAN 存储库的r包
    install.packages("xxx")
    # 2.在Bioconductor存储库中的r包
    if(!requireNamespace("BiocManager",quietly = TRUE))
      install.packages("BiocManager")
    BiocManager::install("GEOquery")
    ## 3.在GitHub储存库中r包
    #先安装devtools:Tools to Make Developing R Packages Easier
    install.packages("devtools")
    library(devtools)
    install_github("authorName/repositoryName")
    ## To install ggplot2 from github:
    devtools::install_github("tidyverse/ggplot2")
    ### 加载r包
    library(GEOquery)
    library(dplyr)
    install.packages("tidyverse")
    library(tidyverse)
    ##设置路径
    getwd()
    setwd("F:/Rdata/jiajia/lession1")
    
    ####################################################################################################
    ### 获取表达矩阵
    
    #查看函数的解释
    ?getGEO
    ##下载数据 getGPL = F 这个代表不下载平台注释文件,因为有时候网络不稳定。后面我们会在网页中下载,然后读取。
    gset = getGEO('GSE12417', destdir=".",getGPL = F)
    gset <- getGEO('GSE12417', destdir=".",getGPL = F)
    getGEO('GSE12417', destdir=".",getGPL = F)
    ##如果无法直接用代码下载,而是在网页端下载好的,可以直接加载如下
    
    
    #s4对象    
    #s3:matrix 矩阵 
    #data.frame() 数据框  
    #character() 向量字符型 
    #list 列表
    
    x=c("zzz","yyy")
    y=c("zy","yq")
    z1=list(x=c("zzz","yyy"),y=c("zy","yq"))
    View(z1)
    ####r语言中 所有的提取 都是用中括号
    
    ###一种提取按照排列顺序
    z1[[2]]
    x[1]
    ###按照对象名称
    z1[["x"]]
    class(x)
    class(z1)
    
    
    ###打开study这个文件夹 我们会发现平台信息文件也下载好了
    ##保存下载的数据 保存为rdata 当然也可以保存为rds
    save(gset,file = "3.gse12417.rdata")
    saveRDS(gset,file = "gse12417.rds")
    ###在读取文件之前 先清空环境
    load("3.gse12417.rdata")
    readRDS("gse12417.rds")
    ####查看大的list,可以用view函数 也可以直接在环境中点击gset
    View(gset)
    ###提取list中的第二个元素(部分)
    z=gset[["GSE12417-GPL96_series_matrix.txt.gz"]]
    ##当然也可以安装排序位置来提取
    e2=gset[[2]]
    ###查看一下e2的数据结构(必须要知道数据结构才能知道下一步怎么做)
    class(e2)
    ##结果中的"ExpressionSet"是S4对象的人为命名
    
    ###查看一下e2对象的内容包含哪些
    View(e2)
    ###提取表达矩阵
    exp=exprs(e2)
    class(exp)
    
    ##当然也可以用环境中的白色括号提取
    e2@phenoData@data[["geo_accession"]]
    #上条代码只是出现在控制台,没有提取至环境变量,如果需要提取到环境变量,需要在上条代码前面赋值
    geo=e2@phenoData@data[["geo_accession"]]
    #使用@或者$符号,使用哪一个取决于创造者,所以直接用两个尝试
    e2@phenoData@data$title
    #下面代码为原本代码,不是视频中的代码
    exp2=e2@assayData[["exprs"]]
    phe=e2@phenoData@data
    
    
    
    #########################################################################################################
    ### 整理探针转化文件
    #GEO数据库下载平台信息,如本次GSE12417,已下载至文件夹中
    #需要先安装加载此平台信息的r包
    install.packages("data.table")
    library(data.table)
    ###读取测序平台信息,为了进行探针的转化  这里的探针就是exprSe的行名比如:10344614
    ###平台文件在geo中下载,下载之后要放在指定的路径下面
    ###用fread函数读取的目的是多线程快速读取
    ###列名和行名不能重复
    ###data.table = F让anno最终结构为数据框
    anno=fread("GPL96-57554.txt",sep = "\t",header = T,data.table = F)
    #开始学习数据框类型
    class(anno)
    #提取行名
    x1=colnames(anno)
    x2=rownames(anno)
    #anno是数据框格式,提取使用[]
    #S3所有对象提取都用[],向量[],列表[[]],数据框和矩阵[行,列]
    #提取第一行第二列
    anno[1,2]
    #提取第三行所有
    anno[3,]
    #提取第五列所有并赋值,n1为字符型向量
    n1=anno[,5]
    #提取第四行所有并赋值,n2为数据框
    n2=anno[4,]
    #提取两个列,两个行
    n4=anno[,c("ID","Target Description")]
    n5=anno[c(1,8),]
    #对某一列提取出来后赋值
    anno$ID=123
    #重新增加一列并赋值
    anno$xyz="abc"
    改变第二列列名
    colnames(anno)[2]="abc"
    #看fread读取时,data.table=F,不要=T
    anno=fread("GPL96-57554.txt",sep = "\t",header = T,data.table = F)
    anno5=fread("GPL96-57554.txt",sep = "\t",header = T,data.table = T)
    class(anno5)
    #header = T意思是:将第一行变成列名
    anno=fread("GPL96-57554.txt",sep = "\t",header = T,data.table = F)
    anno4=fread("GPL96-57554.txt",sep = "\t",header = F,data.table = F)
    #使用read.table读取会失败,因为fread可以自动去除文件前面不规则的注释类文字
    anno2=read.table("GPL96-57554.txt",header = T,fill=T)
    #读取txt格式文件,要加上分割 sep = "\t",txt以table键进行分割
    #csv以空格键进行分割
    #建议读取txt和CSV等文件时,使用fread函数比较友好
    
    #合并数据
    #创建数据框
    d1<- data.frame(x2=c("a","b","c","d"),x1=c(1,3,5,7),stringsAsFactors = FALSE)
    d2<- data.frame(y2=c(10,7,12),y1=c("b","c","d"),stringsAsFactors = FALSE)
    #合并cbind()和rbind(),两个函数是固定列或者行进行合并
    #对行合并rbind()
    a1=rbind(d1,d2)
    b1=cbind(d1,d2)
    #上面两个函数报错,原因是d1和d2行和列没有相同的名字
    #改一下看看
    d11<- data.frame(x1=c("a","b","c"),x2=c(1,3,5),stringsAsFactors = FALSE)
    d22<- data.frame(x1=c(10,7,12),x2=c("b","c","d"),stringsAsFactors = FALSE)
    a1=rbind(d11,d22)
    b1=cbind(d11,d22)
    #merge()是需要指定共同的列,相当于excel里面的VLOOKUP函数,但是excel里面不能批量
    d3=merge(x=d1,y=d2,by.x = "x2",by.y = "y1")
    ?merge
    #当两个数据框相同的列都是第一列时,可以如下
    d4<- data.frame(x3=c("a","b","c","d"),x4=c(1,3,5,7))
    d5<- data.frame(y3=c("b","c","d"),y4=c(10,7,12),stringsAsFactors = FALSE)
    d6=merge(x=d3,y=d4,by =1)
    #load函数读取的是rdata数据
    #fread函数读取的是txt或者excel等数据
    
    #开始对anno文件中的Gene信息进行合并
    #查看anno列名
    colnames(anno)
    #下面两个提取的相同
    gene=anno[,c(1,11)]
    gene.1=anno[,c("ID","Gene Symbol")]
    

    相关文章

      网友评论

          本文标题:2023-02-02

          本文链接:https://www.haomeiwen.com/subject/hicwhdtx.html