学习小组DAY6笔记--Peng

作者: Peng_001 | 来源:发表于2019-10-14 21:59 被阅读0次

    思维导图

    • R包的新手教程


      1.6.1 生信学习【R包的新手教程】DAY6.png

    正式笔记

    0. R包的获取

    • Rstudio 官网
    • R语言都有自己的说明书(cheatsheet),称为小抄。它是一个很好的学习操作指南。

    1. 准备活计——tidyr小抄

    • tidyr 包功能见思维导图
    • 它可以将需要的数据处理成标准而同一的数据框(Tidy Data),以便之后进行进一步的数据处理与作图,非常关键重要的一步。

    (0)修改工作路径

    临时修改工作路径
    setwd() 
    #每次操作Rstudio可临时改动工作路径 但下次启用时便会恢复默认
    
    修改默认工作路径
    • 通过在global options 中设置修改——选择default working directory改动至需要的目录——再次重新启动Rstudio

    (1)安装R包

    library(tidyr) #检测工作目录有无tidyr包
    #没有安装会提示报错
    install.packages("tidyr")
    library(tidyr) #启动安装的包
    
    • 安装过程可能会报错 尝试更换不同镜像
    • 安装过程比较慢 直到工作台出现> 才算安装结束
    • 安装后的包会保存到本地C盘的临时会话的downloaded_packages目录下中,因为R包下载后会默认将二进制zip文件保存在里面,再解压安装到R的library目录下。

    (2)R包操作之数据框

    新建数据框
    a<-data.frame(GeneId = rep("gene_001",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(12,7,3))
    #新建一个3X3数据框赋值给a
    a<-data.frame() #申明一个表格
    #Geneld,SampleName,Expression 为定义的三个列的标题
    #rep,表示重复,括号中填写要重复的字符,和重复次数。
    #paste,连接两个字符串
    #sep,分隔符,连接两个字符串,可以略去不填或者加上sep=""
    
    一些小概念
    • key-value“键值对”,键与值对应,通过索引键可以查找到相对应的值。
    • 函数后面一般需要加括号,括号里第一个参数是数据框名。
    • 字符串都需要加双引号。
    • 行raw,列col(column)。

    (3)认识Tidy Data

    • Tidy data 是一种组织表格数据的方式,提供了一种能够跨包使用的规范格式
    • “统一”的数据格式表示,每个变量占一列,每个情况or观测值占一行。

    2. 开始实战

    Gather&Spread

    (1)gather()

    • gather() moves column names into a key column, gathering the column values into a single value column.
    a<- data.frame(country=c("German","Korea","China"),"2018"=paste(c(1,2,3),"K"),"2019"=paste(c(8,9,10),"K")) 
    #创建一个数据框
    gather(a,X2018,X2019,key = "year",value = "cases")
    #表格显示年份前会自动带上“X” 需要注意一下
    gather(a,"year","case",X2018,X2019)
    #也可以这样写,省略key与value的输入
    gather(a,year,cases,-country)
    #若需要合并的列名过多,也可以这样用排除法,代表合并除了country以外的列
    

    (2)spread()

    • spread() moves the unique values of a key column into the column names, spreading the values of a value column across the new columns.
    a<- data.frame(country=c("German","Korea","China"),"years"=c(2018,2018,2018,2019,2019,2019),"cases"=paste(c(1,2,3,8,9,10)))
    #创建一个数据框
    spread(a,years,cases) #分散years,cases的列
    

    Handle Missing Values

    • 即有些单元格有空值的情况。
    • 将实例文件放在工作目录下
      X1,X2
      A,1
      B,
      C,
      D,3
      E,
    • 见以上文本 命名为XX
    X<-read.csv('XX.txt')
    

    (1)drop_na()

    • 出现空值 删除正行
    drop_na(X,X2) #括号里填数据框名,有空的列名
    

    (2)fill()

    • 根据上一行的数值填充上
    fill(X,X2) 
    

    (3)replace_na()

    • 将空填补进一个指定的数值
    replace_na(X,list(X2=2)) #将数据X中第二列空格填入2
    

    Expand Tables

    (1)Complete()

    • 补充空值位置 并输入一个特定值
    complete(X,nesting(X1),fill=list(X2=7)) #
    

    (2)Expand()

    • 列出每列值所有可能组合
    a<-data.frame(GeneId = rep("gene_001",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(12,7,3))
    #直接用之前举例子的数据框
    expand(a,GeneId,SampleName,Expression)
    #列出所有对应的可能(3x3=9)
    

    参考:
    生信公众号 生信星球 教程

    相关文章

      网友评论

        本文标题:学习小组DAY6笔记--Peng

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