學(xué)習(xí)小組Day6筆記--胡瑩

前兩天一直覺(jué)得R太難了,學(xué)的頭大暂吉,通過(guò)今天的學(xué)習(xí)胖秒,終于讓我擯棄前嫌,開(kāi)始喜歡上了R慕的,真的是功能強(qiáng)大又簡(jiǎn)潔阎肝,非常友好啊。
今天的主要是通過(guò)對(duì)R語(yǔ)言中tidyr包的學(xué)習(xí)肮街,來(lái)認(rèn)識(shí)R包的作用风题。

準(zhǔn)備工作

一、 如何獲取

方法1:去百度/谷歌XX小抄
方法2:找Rstudio的cheatsheet網(wǎng)站(網(wǎng)速好慢的)
https://www.rstudio.com/resources/cheatsheets/
方法2.我們教程里用到的包都可以到生信星球公眾號(hào)回復(fù)相應(yīng)的包名來(lái)獲取
---摘自生信星球教程

二低散、了解tidyr

簡(jiǎn)單的說(shuō),這個(gè)包的作用就是“tidy”你的數(shù)據(jù)骡楼!把你要用的數(shù)據(jù)處理成標(biāo)準(zhǔn)而統(tǒng)一的數(shù)據(jù)框(Tidy Data)熔号,從而進(jìn)行進(jìn)一步的數(shù)據(jù)處理和作圖。
功能

(1)數(shù)據(jù)框的變形
(2)處理數(shù)據(jù)框中的空值
(3)根據(jù)一個(gè)表格衍生出其他表格
(4)實(shí)現(xiàn)行或列的分割和合并
---摘自生信星球教程

三鸟整、安裝tidyr包
準(zhǔn)備工作---打開(kāi)RStudio引镊,設(shè)置工作目錄

> 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’這個(gè)名字的程輯包

2.下載并安裝tidyr
install.packages("tidyr")
Tips:若安裝報(bào)錯(cuò),則更改RStudio的鏡像為國(guó)內(nèi)的(在安裝R/RStudio那一節(jié)的教程有提到,不再贅述)弟头。

3.重新加載tidyr
library(tidyr)

四吩抓、數(shù)據(jù)框小常識(shí)

1.新建數(shù)據(jù)框
后面的學(xué)習(xí)會(huì)需要我們新建數(shù)據(jù)框,所以要提前get這個(gè)技能赴恨。

語(yǔ)法示例:

 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---重復(fù)疹娶,括號(hào)中填要重復(fù)的字符和重復(fù)次數(shù)。
  • paste---連接兩個(gè)字符串伦连,括號(hào)要填兩個(gè)代連接字符并指定分隔符(sep)雨饺,沒(méi)有分隔符就填sep=“”。
  • 1:3---表示從1到三惑淳。如需一列中需要填入三個(gè)無(wú)規(guī)律的數(shù)字额港,可以用向量c(1,3歧焦,4)移斩,同樣如果填的是字符串也需要加雙引號(hào),例如c("doudou","huahua","xiaoyu")绢馍。
    ---摘自生信星球教程

2.了解概念:key-value--“鍵值對(duì)”
表示一種對(duì)應(yīng)關(guān)系向瓷。“鍵”和“值”都是列名痕貌,如SampleName和Expression的對(duì)應(yīng)风罩。
Tips:本節(jié)似乎沒(méi)有用到,雖然在度娘上搜索學(xué)習(xí)了一下舵稠,感覺(jué)自己沒(méi)有什么深刻的認(rèn)識(shí)超升。

3.Tips

  • 函數(shù)后面一般都要加括號(hào),括號(hào)里第一個(gè)參數(shù)是都數(shù)據(jù)框名
  • 字符串要加雙引號(hào)(行名和列名也是字符串哺徊,但是可以不用加)室琢,其他單元格(姑且這么叫了)里出現(xiàn)的字符串要加。
  • 行 raw
    列 column落追,簡(jiǎn)化寫(xiě)法為col
    ---摘自生信星球教程

四盈滴、認(rèn)識(shí)Tidy Data

這是一種組織表格數(shù)據(jù)的方式,提供了一種能夠跨包使用的“統(tǒng)一”的數(shù)據(jù)格式轿钠。


TidyData

tidyr的基本操作

一巢钓、Reshape Data(數(shù)據(jù)重塑)

  • 新建數(shù)據(jù)框a。
 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函數(shù)
    將寬數(shù)據(jù)變成長(zhǎng)數(shù)據(jù)格式
    1.語(yǔ)法
    gather(data, key, value, …, na.rm = FALSE, convert = FALSE)
    data:需要被轉(zhuǎn)換的寬形表
    key:將原數(shù)據(jù)框中的所有列賦給一個(gè)新變量key
    value:將原數(shù)據(jù)框中的所有值賦給一個(gè)新變量value
    …:可以指定哪些列聚到同一列中
    na.rm:是否刪除缺失值
    2.示例
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外剩下的列疗垛。

  • spread函數(shù)
    將長(zhǎng)數(shù)據(jù)變成寬數(shù)據(jù)格式
    spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE)
    data:為需要轉(zhuǎn)換的長(zhǎng)形表
    key:需要將變量值拓展為字段的變量
    value:需要分散的值
    fill:對(duì)于缺失值症汹,可將fill的值賦值給被轉(zhuǎn)型后的缺失值

二、Handle Missing Values(處理丟失的數(shù)據(jù))
當(dāng)某些單元格有空值的情況下贷腕,需要處理這些空值背镇。

  • 讀取示例數(shù)據(jù)
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()優(yōu)點(diǎn)
1.支持R和Excel
2.默認(rèn)分隔符是“咬展,”,導(dǎo)出時(shí)也不會(huì)默認(rèn)加引號(hào)瞒斩。
3.轉(zhuǎn)換txt不會(huì)變亂碼

  • 刪除整行
    drop_na():有空值的破婆,整行刪除掉
    括號(hào)里填數(shù)據(jù)框名,依據(jù)的列名(有空值那一列的列名)
drop_na(X,X2)
  X1 X2
1  A  1
4  D  3
  • 根據(jù)上下文(瞎)蒙一個(gè)
    fill()胸囱,根據(jù)上一行的數(shù)值填充上.
fill(X,X2)
  X1 X2
1  A  1
2  B  1
3  C  1
4  D  3
5  E  3
  • 同一列的空值填上同一個(gè)數(shù)
    replace_na()祷舀,空值填進(jìn)去特定的一個(gè)數(shù)值(還是在應(yīng)付)
    括號(hào)里填數(shù)據(jù)框名,要填的列名=要填的值
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(把空值的位置補(bǔ)全)
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.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(把一列拆成兩列或多列)

  • 建立新數(shù)據(jù)框
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:按列分割
    1.語(yǔ)法
    separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE, convert = FALSE, extra = “warn”, fill = “warn”, …)
    data:為數(shù)據(jù)框
    col:需要被拆分的列
    into:新建的列名,為字符串向量
    sep:被拆分列的分隔符
    remove:是否刪除被分割的列
    2.示例
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:按行分割
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:分割完了再合并回去
    1.語(yǔ)法:
    unite(data, col, …, sep = “_”, remove = TRUE)
    data:為數(shù)據(jù)框
    col:被組合的新列名稱(chēng)
    …:指定哪些列需要被組合
    sep:組合列之間的連接符箕宙,默認(rèn)為下劃線(xiàn)
    remove:是否刪除被組合的列
    2.示例
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:這個(gè)合并結(jié)果和我想象的不一樣嚎朽,嗯....還需要再研究研究。

R包的學(xué)習(xí)(以tidyr為例)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柬帕,一起剝皮案震驚了整個(gè)濱河市哟忍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陷寝,老刑警劉巖锅很,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異凤跑,居然都是意外死亡爆安,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)仔引,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扔仓,“玉大人,你說(shuō)我怎么就攤上這事咖耘∏檀兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵儿倒,是天一觀的道長(zhǎng)版保。 經(jīng)常有香客問(wèn)我,道長(zhǎng)夫否,這世上最難降的妖魔是什么彻犁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮凰慈,結(jié)果婚禮上汞幢,老公的妹妹穿的比我還像新娘。我一直安慰自己溉瓶,他們只是感情好急鳄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著堰酿,像睡著了一般疾宏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上触创,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天坎藐,我揣著相機(jī)與錄音,去河邊找鬼哼绑。 笑死岩馍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抖韩。 我是一名探鬼主播蛀恩,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼茂浮!你這毒婦竟也來(lái)了双谆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤席揽,失蹤者是張志新(化名)和其女友劉穎顽馋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體幌羞,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寸谜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了属桦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熊痴。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖地啰,靈堂內(nèi)的尸體忽然破棺而出愁拭,到底是詐尸還是另有隱情,我是刑警寧澤亏吝,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布岭埠,位于F島的核電站,受9級(jí)特大地震影響蔚鸥,放射性物質(zhì)發(fā)生泄漏惜论。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一止喷、第九天 我趴在偏房一處隱蔽的房頂上張望馆类。 院中可真熱鬧,春花似錦弹谁、人聲如沸乾巧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沟于。三九已至咳胃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旷太,已是汗流浹背展懈。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留供璧,地道東北人存崖。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像睡毒,于是被迫代替她去往敵國(guó)和親来惧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容