学习小组Day7笔记——单双

今天是最后一天了,看看了任务不轻松呀,加快速度搞定,善始善终。

今天的学习任务是学习一个R包的安装和简单应用(笔记内容未标注部分均学习自生信星球)

R包是什么

R包,类似C、Python中库的概念,指包含特定领域的函数、数据、文档等的集合。通过调用包,可以直接使用包中现成的数据、函数等,使开发方便快捷高效。

为什么学习R包

  • R的强大在于包含了各种各样的包,使用包非常有利于便捷开发。
  • 一些功能在现有的包中并不存在,需要自己实现,实现后通过打包方便代码的复用。
  • 每个包涵括一个领域相关的函数数据文档等,通过包可以有效地组织代码结构,有利于开发。

R包的结构

创建R包后,在包的根目录下,一般包含以下几个部分(粗体表示必需):

  • R/: R函数目录,包含包中定义的函数。
  • DESCRIPTION:包的描述,包括包名、作者、依赖等。
  • NAMESPACE:名称空间。
  • man/: R函数手册目录,包含了包中定义函数的手册。
  • vignettes/: R项目目录,包含了本项目的使用指导。
  • tests/: R函数测试目录,包含了包中定义函数的测试及包功能的测试。
  • data/: 包中附带的数据文件。

摘自Young_Gy-R包简单教程

tidyr包

reshape2的替代者,功能更纯粹

tidyr主要提供了一个类似Excel中数据透视表(pivot table)的功能;
gather和spread函数将数据在长格式和宽格式之间相互转化,应用在比如稀疏矩阵和稠密矩阵之间的转化;
separate和union方法提供了数据分组拆分、合并的功能,应用在nominal数据的转化上
R将整洁数据定义为:每个变量的数据存储在自身的列中,每个观测值的数据存储在其自身的行中。整洁数据是进行数据再加工的基础。
tidyr包主要涉及:
1)缺失值的简单补齐
2)长形表变宽形表与宽形表变长形表
  gather-把宽度较大的数据转换成一个更长的形式,它类比于从reshape2包中融合函数的功能
  spread-把长的数据转换成一个更宽的形式,它类比于从reshape2包中铸造函数的功能。
  gather()相反的是spread(),前者将不同的列堆叠起来,后者将同一列分开
3)列分割与列合并
  separate-将一列按分隔符分割为多列
  unite-将多列按指定分隔符合并为一列
tidyr包:(gather(宽数据转为长数据)、spread(长数据转为宽数据)、unit(多列合并为一列)、separate(将一列分离为多列))

摘自Little_Rookie——R----tidyr包介绍学习

如何使用某个R包

看R包的说明书,又叫小抄,理解并灵活使用

如何获取小抄

百度
Rstudio——cheatsheet
生信星球公众号回复R包名称

如何安装

安装tidyrinstall.packages("tidyr")
如果出错,可修改下镜像,tools-Global options-packages-CRAN mirror-change-选个位置最近的
加载tidyrlibrary(tidyr)也可以安装前用这个命令试一下有没有,

学习小组Day7笔记——单双_第1张图片

建数据框

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


具体解释:
rep——重复
paste——连接字符串
sep——分隔符
c()——无序数值或字符

背景知识

了解概念:key-value--“键值对” ,表示一种对应关系。“键”和“值”都是列名,如SampleName和Expression的对应。

函数后面一般都要加括号,括号里第一个参数是都数据框名

字符串要加双引号(行名和列名也是字符串,但是可以不用加),其他单元格(姑且这么叫了)里出现的字符串要加。

行 raw ; 列 column,简化写法为col

Tidya(可使数据变统一格式,方便跨包使用),下图很生动,引用自生信星球

学习小组Day7笔记——单双_第2张图片

每个变量(variable)占一列,每个情况(case,姑且这么翻译)和观测值(observation)占一行

练习使用:

创建a<-data.frame(Country=c("A","B","C"),"1999"=paste(c(0.7,37,212),"K",sep=""),"2000"=paste(c(2,80,213),"k",sep=""))


一 Reshape Data

> gather(a,X1999,X2000,key="year",value="cases")
  Country  year cases
1       A X1999  0.7K
2       B X1999   37K
3       C X1999  212K
4       A X2000    2k
5       B X2000   80k
6       C X2000  213k
> gather(a,"year","cases",X1999,X2000)
  Country  year cases
1       A X1999  0.7K
2       B X1999   37K
3       C X1999  212K
4       A X2000    2k
5       B X2000   80k
6       C X2000  213k
gather(a,"year","cases",-Country)
  Country  year cases
1       A X1999  0.7K
2       B X1999   37K
3       C X1999  212K
4       A X2000    2k
5       B X2000   80k
6       C X2000  213k
> gather(a,year,cases,-Country)
  Country  year cases
1       A X1999  0.7K
2       B X1999   37K
3       C X1999  212K
4       A X2000    2k
5       B X2000   80k
6       C X2000  213k

二 Handle Missing Values
导入:X<-read.csv('doudou.csv')
导出:write.csv(X,'doudou.csv')
csv很好用

学习小组Day7笔记——单双_第3张图片
学习小组Day7笔记——单双_第4张图片
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(把空值的位置补全)

> complete(x,nesting(X1#要把其余列写全,这里就一列),fill=list(X2=5))
# A tibble: 5 x 2
  X1       X2
   
1 A         1
2 B         5
3 C         5
4 D         3
5 E         5

expand(所有组合)


学习小组Day7笔记——单双_第5张图片
expand(a,Country,X1999,X2000)
# A tibble: 27 x 3
   Country X1999 X2000
       
 1 A       0.7K  213k 
 2 A       0.7K  2k   
 3 A       0.7K  80k  
 4 A       212K  213k 
 5 A       212K  2k   
 6 A       212K  80k  
 7 A       37K   213k 
 8 A       37K   2k   
 9 A       37K   80k  
10 B       0.7K  213k 
# ... with 17 more rows

四 split cells
直接夭折在建数据框上,没有活学活用,先记下,有空再好好研究
separate:按列分割

学习小组Day7笔记——单双_第6张图片

separate_rows:按行分割


学习小组Day7笔记——单双_第7张图片

unite:分割完了再合并回去


学习小组Day7笔记——单双_第8张图片

结语

今天的一点小感悟,我的表妹来看我,她是个受了很多苦但性格开朗的女孩儿,她羡慕我的学生生活,甚至听到别人用hello和我打招呼这种在她的日常中也是很平常的事情,发生在这个我每天待的她很羡慕的地方,她都会觉得格外遥远,很吃惊的问我”在这你们都用英语说话呀“,要知道有这种调侃”读博=蹲监狱“,有些枯燥难熬的时刻确实神似,但可知道你眼中的监狱可是别人眼中的天堂,她经历社会之种种历练在你眼中却是自由,她总用社会底层来形容自己,我告诉她我并不如你,他男朋友说追求不同,我却说不出我追求的是什么,我们都一样,地瓜土豆而已,命运不同而已,走好当下的每一步就好!

至此,7天的学习结束,今天就不长篇大论了,在这里我收获了渔,并对曾觉得像天书般的东西有所了解并初步入门,我感受到了任何不经意提出的小问题都有及时的反馈和更新(比如脚本窗口的使用,引用图片的格式,笔记中记下的小问题等等),我感受到了教程的精心准备和老师的用心,很值得,不知下次何时再见,期待,感谢+7+.......................!

你可能感兴趣的:(学习小组Day7笔记——单双)