学习小组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)也可以安装前用这个命令试一下有没有,

建数据框

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(可使数据变统一格式,方便跨包使用),下图很生动,引用自生信星球


每个变量(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很好用

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
  <fct> <dbl>
1 A         1
2 B         5
3 C         5
4 D         3
5 E         5

expand(所有组合)


expand(a,Country,X1999,X2000)
# A tibble: 27 x 3
   Country X1999 X2000
   <fct>   <fct> <fct>
 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:按列分割

separate_rows:按行分割


unite:分割完了再合并回去


结语

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容