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

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

准备工作:

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;


    学习小组Day6学习笔记--徐沫沫_第1张图片
    image.png
  • a<- gather(table4a,1999,2000,key="year",value="cases")

学习小组Day6学习笔记--徐沫沫_第2张图片
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;

    学习小组Day6学习笔记--徐沫沫_第3张图片
    image.png

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

data_eg1<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(14,19,18))
学习小组Day6学习笔记--徐沫沫_第4张图片
image.png
expand(data_eg1,GeneId,SampleName,Expression)
学习小组Day6学习笔记--徐沫沫_第5张图片
image.png

4.split cells

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


学习小组Day6学习笔记--徐沫沫_第6张图片
image.png
  • separate:按列分割
    table_sep <- separate(table3,rate,into=c("cases","pop"))
学习小组Day6学习笔记--徐沫沫_第7张图片
image.png
  • separate_rows:按行分割
    separate_rows(table3,rate)

    学习小组Day6学习笔记--徐沫沫_第8张图片
    image.png

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

    学习小组Day6学习笔记--徐沫沫_第9张图片
    image.png

今天就到这里咯~~~

你可能感兴趣的:(学习小组Day6学习笔记--徐沫沫)