美文网首页生信星球培训第六期
学习小组Day6学习笔记--徐沫沫

学习小组Day6学习笔记--徐沫沫

作者: 徐沫沫 | 来源:发表于2018-09-23 19:06 被阅读2次

    滴滴滴,第六天打卡~~~~

    准备工作:

    part1:学会获取一个R包的小抄

    方法1:百度/谷歌
    方法2:找Rstudio的cheatsheet网站
    https://www.rstudio.com/resources/cheatsheets/
    方法3: 生信星球公众号(教程用的包)

    part2:初步了解tidyr包

    • 它的功能主要有:
      (1)数据框的变形
      (2)处理数据框中的空值
      (3)根据一个表格衍生出其他表格
      (4)实现行或列的分割和合并
        这个包是把要用的数据处理成标准而统一的数据框:Tidy Data

    part3:学习极简安装R包:

    1.命令:library(tidyr),如果没有安装这个包,会报错,进行下一步;
    2.下载和安装tydir,命令:install.packages("tidyr")
    (默认安装到工作目录里,若是报错,打不开连接,可以换个镜像试试)

    part4:关于数据框

    1.新建数据框,命令:

    a<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(14,19,18))
    

    新建一个数据框并赋值给a,括号里是“列名”=列值,注意,这里列名要加双引号

    rep,表示重复,括号中填要重复的字符和重复次数。
    paste,连接两个字符串,括号要填这两个字符串并指定分隔符(sep),没有分隔符就填sep=""。

    字符串需要加双引号

    1. key-value
      “键值对” ,表示一种对应关系。“键”和“值”都是列名,如 SampleName 和 Expression 。
    2. 函数后面一般都要加括号,括号里第一个参数是数据框名。
    3. 字符串要加双引号(行名和列名也是字符串,但是可以不用加)。

    part5:认识Tidy Data

    一种组织表格数据的方式,提供了一种能够跨包使用的“统一”的数据格式:
    每个变量(variable)占一列,每个情况(case)和观测值(observation)占一行。


    终于进入正题:

    1.Reshape Data

    gather:将数据框转换为Tidy Data;
    spread:让tidy data一夜回到解放前。哈哈哈~~~

    • 将示例数据下载或者复制粘贴成table4a;


      image.png
    • a<- gather(table4a,1999,2000,key="year",value="cases")

    image.png

    或者,需合并的列名也可以列在最后:

    • b <- gather(table4a,"year","cases",1999,2000)
      gather括号里的分别是:
      数据框名,需合并的列名(两个),合并后的key列名,value列名。
    • 如果合并前的列名比较多,可以用排除法来偷懒:
      gather(a,year,cases,-country) # -country的意思就是合并除country外剩下的列。

    2.Handle Missing Values

    处理丢失的数据,即某些单元格有空值的情况。
    三种处理方式:
    (1) 删除整行
    (2) 根据上下文(瞎)蒙一个
    (3) 同一列的空值填上同一个数。

    NA表示空值,所以新建的时候空着就好。

    • 获得图示数据框X
      X<-read.csv('doudou.txt')
      默认参数:默认分隔符是“,”,导出时也不会默认加引号,并且转换txt也不会变乱码!
      如果用read.table,默认参数很笨哦,
    这花花老师发现的嘞,厉害厉害~~~~
    • csv的导入和导出方式:
      导入:X<-read.csv('doudou.csv')
      导出:write.csv(X,'doudou.csv')
    • drop_na():有空值的,整行删除;
      括号里填数据框名,有空值那一列的列名;
      例如:drop_na(X,X2)
    • fill(),同一列的空值填上同一个数;
      例如:fill(X,X2) # 根据上一行的值填充
    • replace_na(),空值填进去特定的一个数值,括号里填数据框名,要填的列名=要填的值;
      例如:replace_na(X,list(X2=2))

    3. Expand Tables

    • complete(把空值的位置补全)
      例如:complete(X,nesting(x1),fill=list(x2=5)) # 把刚才的空值补上5;

      image.png
    • expand
      (列出每列值所有可能的组合--根据下面的示例来理解这句话)
      示例:

    data_eg1<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(14,19,18))
    
    image.png
    expand(data_eg1,GeneId,SampleName,Expression)
    
    image.png

    4.split cells

    (把一列拆成两列。目测原列必须要有分隔符才行啊好像。)
    原数据:


    image.png
    • separate:按列分割
      table_sep <- separate(table3,rate,into=c("cases","pop"))
    image.png
    • separate_rows:按行分割
      separate_rows(table3,rate)

      image.png
    • unite:分割完了再合并回去
      unite(table_sep,cases,pop,col="rate",sep="/")

      image.png

    今天就到这里咯~~~

    相关文章

      网友评论

        本文标题:学习小组Day6学习笔记--徐沫沫

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