学习小组Day6笔记——TheCatcher

安装和加载tidyr包

因为之前安装过tidyverse包,已经将tidyr包含在内,所以就直接library啦,不过以防将来需要,还是学习一下更换镜像的方法


tools->global options->packages->cran mirror->change

新建并查看数据框

> a<-data.frame(GeneId=rep("gene5",times=3),SampleNames=paste("Sample",1:3,sep=""),Expression=c(14,19,18))
> View(a)
喏,就像这样啦

Reshape data

先输入数据啦

不加sep=""

加sep=""

看来paste指令的默认分隔符的确是空格啦,如果强迫症如我一定要跟原表一样,千万别忘了sep=""哦
确实自动加了X呢…所以原来那个数据怎么来的?从csv直接读取的吗?

正式reshape

巴拉拉能量,变瘦变高高!

但是View(t)的话,发现t的结构并没有发生变化


View(t)

然后再进行spread操作发现并不能实现


spread不成呢

我的理解是,gather操作只在这一步有效,并不对你的原始数据框作出改变。这个reshape是一次性的而不是永久的,如果需要用reshape后的数据做接下来的操作,可以试试gather()%>%或者将gather后的数据赋值给一个新的全局变量
这样可以

这样也可以

嘻嘻先gather一下再重新按country和cases spread

Handle missing values

先导入一下示例数据

X<-read.csv('doudou.txt')
观察一下

删除整行

根据上下文填一个most recent non-NA值

> fill(X,X2)#用最近的non-NA值填充数据框X中X2列的NA值
  X1 X2
1  A  1
2  B  1
3  C  1
4  D  3
5  E  3
> #默认.direction是"down",向下填充,我们来试试向上
> fill(X,X2,.direction="up")
  X1 X2
1  A  1
2  B  3
3  C  3
4  D  3
5  E NA
>#这里最后一行是NA值,所以它没办法填充了,我们换个数据框看看
> (Y<-read.csv("yee.txt"))
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA
6  F  4
> fill(Y,X2,.direction="up")
  X1 X2
1  A  1
2  B  3
3  C  3
4  D  3
5  E  4
6  F  4

同一列的空值填上同一个数

> replace_na(X,list(X2=2))#把数据框X中,列X2中的na值全换成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
> #我觉得这跟replace_na最大的不同就是返回的是一个tibble而不是数据框吧

看了下nesting的帮助文件

其实并没有太搞懂在我上述代码中是用来干嘛

意思大概是说nesting(xxx,yyy)就只显示数据中的这两个组合?
可我还是不懂complete里用这个干嘛啊?
所以我决定去掉nesting(X1)这一句看看效果

哦豁完蛋,更看不懂了(求豆花解答!

> a
  GeneId SampleNames Expression
1  gene5     Sample1         14
2  gene5     Sample2         19
3  gene5     Sample3         18
> expand(a,GeneId,SampleNames,Expression)
# A tibble: 9 x 3
  GeneId SampleNames Expression
  <fct>  <fct>            <dbl>
1 gene5  Sample1             14
2 gene5  Sample1             18
3 gene5  Sample1             19
4 gene5  Sample2             14
5 gene5  Sample2             18
6 gene5  Sample2             19
7 gene5  Sample3             14
8 gene5  Sample3             18
9 gene5  Sample3             19
> expand(a,nesting(SampleNames,Expression))
# A tibble: 3 x 2
  SampleNames Expression
  <fct>            <dbl>
1 Sample1             14
2 Sample2             19
3 Sample3             18
> expand(a,nesting(SampleNames),GeneId,Expression)
# A tibble: 9 x 3
  SampleNames GeneId Expression
  <fct>       <fct>       <dbl>
1 Sample1     gene5          14
2 Sample1     gene5          18
3 Sample1     gene5          19
4 Sample2     gene5          14
5 Sample2     gene5          18
6 Sample2     gene5          19
7 Sample3     gene5          14
8 Sample3     gene5          18
9 Sample3     gene5          19

我现在好像明白nesting了,在nesting括号里的那一(或几)列就不变,然后剩下的且提到的列才进行相应的操作
那我还是没想明白complete里是干啥用??

split cells

> (sep<-read.csv("separate.txt"))
  country year     rate
1       A 1999 0.7K/19M
2       A 2000   2K/20M
3       B 1999 37K/172M
4       B 2000 80K/174M
5       C 1999  212K/1T
6       C 2000  213K/1T
> separate(sep,rate,into=c("cases","pop"))
  country year cases  pop
1       A 1999     0   7K
2       A 2000    2K  20M
3       B 1999   37K 172M
4       B 2000   80K 174M
5       C 1999  212K   1T
6       C 2000  213K   1T
Warning message:
Expected 2 pieces. Additional pieces discarded in 1 rows [1]. 
> ?separate
> separate(sep,rate,into=c("cases","pop"),sep="/")
  country year cases  pop
1       A 1999  0.7K  19M
2       A 2000    2K  20M
3       B 1999   37K 172M
4       B 2000   80K 174M
5       C 1999  212K   1T
6       C 2000  213K   1T

我试了下按cheatsheet上的代码是有问题的,不指定分隔符的情况下它是看见啥分隔符就分,所以0.7K会被分成0和7K
指定sep="/"就没问题啦
按行分割如下:

> separate_rows(sep,rate,sep="/")
   country year rate
1        A 1999 0.7K
2        A 1999  19M
3        A 2000   2K
4        A 2000  20M
5        B 1999  37K
6        B 1999 172M
7        B 2000  80K
8        B 2000 174M
9        C 1999 212K
10       C 1999   1T
11       C 2000 213K
12       C 2000   1T

unite

> (uni<-read.csv("unite.txt"))
  country century year
1  Afghan      19   99
2  Afghan      20    0
3  Brazil      19   99
4  Brazil      20    0
5   China      19   99
6   China      20    0
> unite(uni,century,year,col="year",sep="")
  country year
1  Afghan 1999
2  Afghan  200
3  Brazil 1999
4  Brazil  200
5   China 1999
6   China  200

下面是今天的思维导图


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

推荐阅读更多精彩内容