學習小組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+.......................!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容