image.png
R包準(zhǔn)備先知
-
R包(又叫小抄)的獲取途徑
方法1:去百度/谷歌XX小抄
方法2:找Rstudio的cheatsheet網(wǎng)站(網(wǎng)速好慢的) -
tidyr介紹
R包里簡單的衍锚,如下以此為例學(xué)會(huì)安裝和使用。已從公眾號(hào)下載該R包小抄pdf
功能主要有:
(1)數(shù)據(jù)框的變形
(2)處理數(shù)據(jù)框中的空值
(3)根據(jù)一個(gè)表格衍生出其他表格
(4)實(shí)現(xiàn)行或列的分割和合并
這個(gè)包是把你要用的數(shù)據(jù)處理成標(biāo)準(zhǔn)而統(tǒng)一的數(shù)據(jù)框(Tidy Data) - 安裝tidyr
- 進(jìn)入Rstudio,按上節(jié)設(shè)置好工作目錄
- 在控制臺(tái)輸入:
library(tidyr)
,發(fā)現(xiàn)沒有這個(gè)包呢燥,所以會(huì)報(bào)錯(cuò) - 下載和安裝tydir:
install.packages("tidyr")
- 加載tydir:
library(tidyr)
- 數(shù)據(jù)框的5點(diǎn)小常識(shí)
- 以下面命令為例千绪,來看如何解讀
a<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(14,19,18))
- 表達(dá)的意思是:新建數(shù)據(jù)框萎河,這里直接把新建的數(shù)據(jù)框賦值給了a。括號(hào)里是“列名”=列值红伦,這里列名要加雙引號(hào)。
-
rep
淀衣,重復(fù)昙读,括號(hào)中填要重復(fù)的字符和重復(fù)次數(shù)。paste
膨桥,連接兩個(gè)字符串蛮浑,括號(hào)要填兩個(gè)代連接字符并指定分隔符(sep),沒有分隔符就填sep=“”
只嚣。
-
- key-valueg可理解為“鍵值對(duì)” 沮稚,表示一種對(duì)應(yīng)關(guān)系。“鍵”和“值”都是列名
- 函數(shù)后面一般都要加括號(hào)册舞,括號(hào)里第一個(gè)參數(shù)是都數(shù)據(jù)框名
- 字符串要加雙引號(hào)(行名和列名也是字符串壮虫,但是可以不用加),其他單元格里出現(xiàn)的字符串要加
- 認(rèn)識(shí)Tidy Data
圖片引用自生信星球
“統(tǒng)一”:每個(gè)變量(variable)占一列环础,每個(gè)情況(case)和觀測值(observation)占一行囚似。
image.png
tidyr包使用(四大點(diǎn))
-
一.Reshape Data
用于把數(shù)據(jù)框統(tǒng)一化
image.png
- 輸入
a<-data.frame(country = c("A","B","C"),"1999" =paste(c(0.7,37,212),"K"),"2000" =paste(c(2,80,213),"K"))
(特例:當(dāng)列名是數(shù)字的時(shí)候,比如這里1999是字符變量线得,加雙引號(hào)饶唤、單引號(hào)還是反引號(hào)(英文模式下的1前面那個(gè)鍵)都不報(bào)錯(cuò)!) -
結(jié)果如下
同時(shí)數(shù)字列名前面加上個(gè)x(大寫的)
image.png - 如何將上述結(jié)果改為 統(tǒng)一
使用gather函數(shù):合并函數(shù)贯钩∧伎瘢基本格式是gather(數(shù)據(jù)框名,需合并的列名(兩個(gè))角雷,合并后的key列名祸穷,value列名)
此案例中gather(a,X1999,X2000,key = "year",value = "cases")
其中key=和value=也可以省略,即gather(a,X1999,X2000,key = "year",value = "cases")
結(jié)果圖如下勺三,有warning也沒事
image.png
-
二.Handle Missing Value
處理丟失的數(shù)據(jù)雷滚。就是某些單元格有空值的情況
image.png
- 首先用以下命令獲得圖示數(shù)據(jù)框X
X<-read.csv('doudou.txt')
補(bǔ)充csv的導(dǎo)入和導(dǎo)出方式。
導(dǎo)入:X<-read.csv('doudou.csv')
導(dǎo)出:write.csv(X,'doudou.csv')
- Handle Missing Value有三種處理方式
-
drop_na(數(shù)據(jù)框名吗坚,依據(jù)的列名(即有空值那一列的列名))
,表示有空值的祈远,整行刪除掉呆万。此處為drop_na(X,X2)
-
-
fill(數(shù)據(jù)框名,依據(jù)的列名))
车份,表示根據(jù)上一行的數(shù)值填充上谋减,此處為fill(X,X2)
-
-
replace_na(數(shù)據(jù)框名,要填的列名=要填的值)
扫沼,空值填進(jìn)去特定的一個(gè)數(shù)值
此處為replace_na(X,list(X2=2))
-
-
三.Expand Tables
image.png
- complete函數(shù)
表示把空值的位置補(bǔ)全出爹,此處為
complete(X,nesting(X1),fill=list(X2=5))
,感覺和replace功能相近缎除,只是complete函數(shù)以政,需要把列的信息也考慮進(jìn)來(如此處的nesting(X1)) - expand函數(shù)
意思是列出每列值所有可能的組合
- 示例先建一個(gè)數(shù)據(jù)框
pin2<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(14,19,18))
image.png
- 示例先建一個(gè)數(shù)據(jù)框
- 然后輸入
expand(pin2,GeneId,SampleName,Expression)
image.png
- 然后輸入
-
四.split cells
圖片引用自生信星球
表示把一列拆成兩列(原列必須要有分隔符)
image.png
separate
:按列分割
separate_rows
:按行分割
image.png
unite
:分割完了再合并回去