生信星球培训第八期

学习小组Day6笔记--胡莹

2018-10-28  本文已影响34人  胡莹crystal

前两天一直觉得R太难了,学的头大,通过今天的学习,终于让我摈弃前嫌,开始喜欢上了R,真的是功能强大又简洁,非常友好啊。
今天的主要是通过对R语言中tidyr包的学习,来认识R包的作用。

准备工作

一、 如何获取

方法1:去百度/谷歌XX小抄
方法2:找Rstudio的cheatsheet网站(网速好慢的)
https://www.rstudio.com/resources/cheatsheets/
方法2.我们教程里用到的包都可以到生信星球公众号回复相应的包名来获取
---摘自生信星球教程

二、了解tidyr

简单的说,这个包的作用就是“tidy”你的数据!把你要用的数据处理成标准而统一的数据框(Tidy Data),从而进行进一步的数据处理和作图。
功能

(1)数据框的变形
(2)处理数据框中的空值
(3)根据一个表格衍生出其他表格
(4)实现行或列的分割和合并
---摘自生信星球教程

三、安装tidyr包
准备工作---打开RStudio,设置工作目录

> getwd()
[1] "C:/Users/Administrator/Documents"
> setwd("C:/Users/Administrator/Desktop/RData")
> getwd()
[1] "C:/Users/Administrator/Desktop/RData"

1.检查是否安装

library(tidyr)
Error in library(tidyr) : 不存在叫‘tidyr’这个名字的程辑包

2.下载并安装tidyr
install.packages("tidyr")
Tips:若安装报错,则更改RStudio的镜像为国内的(在安装R/RStudio那一节的教程有提到,不再赘述)。

3.重新加载tidyr
library(tidyr)

四、数据框小常识

1.新建数据框
后面的学习会需要我们新建数据框,所以要提前get这个技能。

语法示例:

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

tips:

  • rep---重复,括号中填要重复的字符和重复次数。
  • paste---连接两个字符串,括号要填两个代连接字符并指定分隔符(sep),没有分隔符就填sep=“”。
  • 1:3---表示从1到三。如需一列中需要填入三个无规律的数字,可以用向量c(1,3,4),同样如果填的是字符串也需要加双引号,例如c("doudou","huahua","xiaoyu")。
    ---摘自生信星球教程

2.了解概念:key-value--“键值对”
表示一种对应关系。“键”和“值”都是列名,如SampleName和Expression的对应。
Tips:本节似乎没有用到,虽然在度娘上搜索学习了一下,感觉自己没有什么深刻的认识。

3.Tips

  • 函数后面一般都要加括号,括号里第一个参数是都数据框名
  • 字符串要加双引号(行名和列名也是字符串,但是可以不用加),其他单元格(姑且这么叫了)里出现的字符串要加。
  • 行 raw
    列 column,简化写法为col
    ---摘自生信星球教程

四、认识Tidy Data

这是一种组织表格数据的方式,提供了一种能够跨包使用的“统一”的数据格式。


TidyData

tidyr的基本操作

一、Reshape Data(数据重塑)

 a <- data.frame(country=c("a","B","C"),`1999`=paste(c(0.7,37,212),"K"),`2000`=paste(c(2,80,213),"K"))
> a
  country X1999 X2000
1       a 0.7 K   2 K
2       B  37 K  80 K
3       C 212 K 213 K
gather(a,"year","cases",X1999,X2000)
  country  year cases
1       a X1999 0.7 K
2       B X1999  37 K
3       C X1999 212 K
4       a X2000   2 K
5       B X2000  80 K
6       C X2000 213 K

3.Tips:三种命令比较
gather(a,X1999,X2000,key = "year",value = "cases")#正常的做法
gather(a,"year","cases",X1999,X2000) #推荐的偷懒做法
gather(a,year,cases,-country) #-country的意思就是合并除country外剩下的列。

二、Handle Missing Values(处理丢失的数据)
当某些单元格有空值的情况下,需要处理这些空值。

X <- read.csv('doudou.txt')
> X
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA

Tips: read.csv()优点
1.支持R和Excel
2.默认分隔符是“,”,导出时也不会默认加引号。
3.转换txt不会变乱码

drop_na(X,X2)
  X1 X2
1  A  1
4  D  3
fill(X,X2)
  X1 X2
1  A  1
2  B  1
3  C  1
4  D  3
5  E  3
replace_na(X,list(X2=2))
  X1 X2
1  A  1
2  B  2
3  C  2
4  D  3
5  E  2

三、Expand Tables

complete(X,nesting(X1),fill = list(X2=5))
# A tibble: 5 x 2
  X1       X2
  <fct> <dbl>
1 A         1
2 B         5
3 C         5
4 D         3
5 E         5
expand(a,country,X1999,X2000)
# A tibble: 27 x 3
   country X1999 X2000
   <fct>   <fct> <fct>
 1 a       0.7 K 2 K  
 2 a       0.7 K 213 K
 3 a       0.7 K 80 K 
 4 a       212 K 2 K  
 5 a       212 K 213 K
 6 a       212 K 80 K 
 7 a       37 K  2 K  
 8 a       37 K  213 K
 9 a       37 K  80 K 
10 B       0.7 K 2 K  
# ... with 17 more rows

四、split cells(把一列拆成两列或多列)

b <- data.frame(country=c("A","B","C"),year=c(1999,2000,2001),rate=c("1999-1","2000-2","2001-3"))
> b
  country year   rate
1       A 1999 1999-1
2       B 2000 2000-2
3       C 2001 2001-3
separate(b,rate,into=c("cases","pop"),sep = "-")
  country year cases pop
1       A 1999  1999   1
2       B 2000  2000   2
3       C 2001  2001   3
separate_rows(b,rate,sep = "-")
  country year rate
1       A 1999 1999
2       A 1999    1
3       B 2000 2000
4       B 2000    2
5       C 2001 2001
6       C 2001    3
unite(b,year,rate,col = "year",sep = "-")
  country        year
1       A 1999-1999-1
2       B 2000-2000-2
3       C 2001-2001-3

Tips:这个合并结果和我想象的不一样,嗯....还需要再研究研究。

R包的学习(以tidyr为例)
上一篇下一篇

猜你喜欢

热点阅读