學習小組Day6筆記-夢幻天堂

今天任務安裝R包并處理一個數(shù)據(jù)文件

R包

R包都有自己的說明書(cheatsheet),俗稱小抄。

以后學習R包,主要自己研究小抄,那么小抄的獲得方式有哪些?

方法1:去百度/谷歌XX小抄
方法2:找Rstudio的cheatsheet網(wǎng)站(網(wǎng)速好慢的)
https://www.rstudio.com/resources/cheatsheets/
方法3. 教程里用到的包都可以到生信星球公眾號回復相應的包名來獲取

了解tidyr包

tidyr的功能主要有:
(1)數(shù)據(jù)框的變形
(2)處理數(shù)據(jù)框中的空值
(3)根據(jù)一個表格衍生出其他表格
(4)實現(xiàn)行或列的分割和合并

這個包是把你要用的數(shù)據(jù)處理成標準而統(tǒng)一的數(shù)據(jù)框,就是數(shù)據(jù)分析前的準備工作。

安裝tidyr包

  • 下載和安裝tidyr包

install.packages("tidyr")

  • 加載tidyr包

library(tidyr)

  • 新建數(shù)據(jù)框

a<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(14,19,18))

自己隨便建立一個數(shù)據(jù)框如下

bioplanet<-data.frame(ID=c(1:5),genesmyble=c("w","f","d","e","p"),expression=c(6:10))

Snipaste_2018-10-27_19-59-39.png

注釋與注意事項

rep,重復,括號中填要重復的字符和重復次數(shù)。
paste,連接兩個字符串,括號要填兩個代連接字符并指定分隔符(sep),沒有分隔符就填sep=“”。
1:3表示從1到三。如需一列中需要填入三個無規(guī)律的數(shù)字,可以用向量c(1,3,4),同樣如果填的是字符串也需要加雙引號,例如c("doudou","huahua","xiaoyu")。
2.了解概念:key-value--“鍵值對” ,表示一種對應關系。“鍵”和“值”都是列名,如SampleName和Expression的對應。
3.函數(shù)后面一般都要加括號,括號里第一個參數(shù)是都數(shù)據(jù)框名
4.字符串要加雙引號(行名和列名也是字符串,但是可以不用加),其他單元格(姑且這么叫了)里出現(xiàn)的字符串要加。
行 raw
列 column,簡化寫法為col

  • 了解Tidyr Data

這是一種組織表格數(shù)據(jù)的方式,提供了一種能夠跨包使用的“統(tǒng)一”的數(shù)據(jù)格式。
什么叫“統(tǒng)一”?
每個變量(variable)占一列,每個情況(case,姑且這么翻譯)和觀測值(observation)占一行。

整理數(shù)據(jù)(Reshape Data)

先了解兩個函數(shù)

gather函數(shù):將寬數(shù)據(jù)變成長數(shù)據(jù)格式。把列名變行數(shù)值。
spread函數(shù):將長數(shù)據(jù)變成寬數(shù)據(jù)格式。 把列數(shù)值變列名。

  • 新建一個數(shù)據(jù)文件
> a<- data.frame(country=c("A","B","C"),"1999"=paste("K",c(0.7,37,212)),"2000"=paste("K",c(2,80,213)))
> View(a)
Snipaste_2018-10-27_20-58-40.png
  • 將列名合并成一個列

gather(a,X1999,X2000,key = "year",value = "cases")

Snipaste_2018-10-27_21-09-13.png

gather括號里的分別是:
數(shù)據(jù)框名,需合并的列名(兩個),合并后的key列名,value列名。
其中,需合并的列名也可以列在最后(其實個順序才是默認的),key=和value=也可以省略,如果按照上面小抄的命令括號里那個順序,省略了就會報錯。
簡化代碼gather(a,"year","cases",X1999,X2000) #推薦的偷懶做法
合并前的列名如果比較多,可以用排除法來偷懶,在上圖例子中可用gather(a,year,cases,-country) #-country的意思就是合并除country外剩下的列。

  • 處理丟失的數(shù)據(jù)

三種處理方式:
(1).刪除整行
(2).根據(jù)上下文(瞎)蒙一個
(3).同一列的空值填上同一個數(shù)。

  1. 刪除整行
    drop_na():有空值的,整行刪除掉
    括號里填數(shù)據(jù)框名,依據(jù)的列名(有空值那一列的列名)
Snipaste_2018-10-27_21-19-05.png

這里注意讀入數(shù)據(jù)并賦值給一個變量

Snipaste_2018-10-27_21-21-04.png

在這里之所以選擇了csv,是因為這個神奇的格式支持R和Excel,默認參數(shù)好的很(默認分隔符是“,”,導出時也不會默認加引號。如果你用read.table試試就知道默認參數(shù)多笨了),并且轉(zhuǎn)換txt也不會變亂碼!
在這里補充下csv的導入和導出方式。(默認參數(shù)好,學R沒煩惱)
導入:X<-read.csv('doudou.csv')
導出:write.csv(X,'doudou.csv')

  1. 根據(jù)上下文(瞎)蒙一個
    fill(),根據(jù)上一行的數(shù)值填充上(好應付的感覺)
    Snipaste_2018-10-27_22-09-00.png

原文件
Snipaste_2018-10-27_22-11-13.png

分割后的文件


Snipaste_2018-10-27_22-09-06.png

csv 文件是用逗號分隔的,故而 sep = ","
tsv 文件是用制表符分隔的,故而 sep = "\t"
常用的分隔符還有空格 sep = " "
分隔符是任意的,可根據(jù)具體情況指定的。
在輸入的時候,原內(nèi)容是用什么符號分隔的,sep就要保持一致,否則可能無法正確讀取

因為少打了sep函數(shù)0.7變成0了,經(jīng)花花指導,原來不加sep自動識別分隔符,把小數(shù)點也算成分隔符了。因為只指定分割兩列,所以7不出來了。
改為separate(a,X1999,into = c("cas","rep"),sep=" ")成功分割。

Snipaste_2018-10-27_22-34-23.png

思維導圖
R處理數(shù)據(jù)文件.png

今天學習結(jié)束,好像比昨天簡單了一些,也許是我進步了。_

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容