學習小組Day6學習筆記--徐沫沫

滴滴滴,第六天打卡~~~~

準備工作:

part1:學會獲取一個R包的小抄

方法1:百度/谷歌
方法2:找Rstudio的cheatsheet網站
https://www.rstudio.com/resources/cheatsheets/
方法3: 生信星球公眾號(教程用的包)

part2:初步了解tidyr包

  • 它的功能主要有:
    (1)數據框的變形
    (2)處理數據框中的空值
    (3)根據一個表格衍生出其他表格
    (4)實現行或列的分割和合并
      這個包是把要用的數據處理成標準而統一的數據框:Tidy Data

part3:學習極簡安裝R包:

1.命令:library(tidyr),如果沒有安裝這個包,會報錯,進行下一步;
2.下載和安裝tydir,命令:install.packages("tidyr")
(默認安裝到工作目錄里,若是報錯,打不開連接,可以換個鏡像試試)

part4:關于數據框

1.新建數據框,命令:

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

新建一個數據框并賦值給a,括號里是“列名”=列值,注意,這里列名要加雙引號。

rep,表示重復,括號中填要重復的字符和重復次數。
paste,連接兩個字符串,括號要填這兩個字符串并指定分隔符(sep),沒有分隔符就填sep=""。

字符串需要加雙引號。

  1. key-value
    “鍵值對” ,表示一種對應關系?!版I”和“值”都是列名,如 SampleName 和 Expression 。
  2. 函數后面一般都要加括號,括號里第一個參數是數據框名。
  3. 字符串要加雙引號(行名和列名也是字符串,但是可以不用加)。

part5:認識Tidy Data

一種組織表格數據的方式,提供了一種能夠跨包使用的“統一”的數據格式:
每個變量(variable)占一列,每個情況(case)和觀測值(observation)占一行。


終于進入正題:

1.Reshape Data

gather:將數據框轉換為Tidy Data;
spread:讓tidy data一夜回到解放前。哈哈哈~~~

  • 將示例數據下載或者復制粘貼成table4a;


    image.png
  • a<- gather(table4a,1999,2000,key="year",value="cases")

image.png

或者,需合并的列名也可以列在最后:

  • b <- gather(table4a,"year","cases",1999,2000)
    gather括號里的分別是:
    數據框名,需合并的列名(兩個),合并后的key列名,value列名。
  • 如果合并前的列名比較多,可以用排除法來偷懶:
    gather(a,year,cases,-country) # -country的意思就是合并除country外剩下的列。

2.Handle Missing Values

處理丟失的數據,即某些單元格有空值的情況。
三種處理方式:
(1) 刪除整行
(2) 根據上下文(瞎)蒙一個
(3) 同一列的空值填上同一個數。

NA表示空值,所以新建的時候空著就好。

  • 獲得圖示數據框X
    X<-read.csv('doudou.txt')
    默認參數:默認分隔符是“,”,導出時也不會默認加引號,并且轉換txt也不會變亂碼!
    如果用read.table,默認參數很笨哦,
這花花老師發現的嘞,厲害厲害~~~~
  • csv的導入和導出方式:
    導入:X<-read.csv('doudou.csv')
    導出:write.csv(X,'doudou.csv')
  • drop_na():有空值的,整行刪除;
    括號里填數據框名,有空值那一列的列名;
    例如:drop_na(X,X2)
  • fill(),同一列的空值填上同一個數;
    例如:fill(X,X2) # 根據上一行的值填充
  • replace_na(),空值填進去特定的一個數值,括號里填數據框名,要填的列名=要填的值;
    例如:replace_na(X,list(X2=2))

3. Expand Tables

  • complete(把空值的位置補全)
    例如:complete(X,nesting(x1),fill=list(x2=5)) # 把剛才的空值補上5;

    image.png

  • expand
    (列出每列值所有可能的組合--根據下面的示例來理解這句話)
    示例:

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

4.split cells

(把一列拆成兩列。目測原列必須要有分隔符才行啊好像。)
原數據:


image.png
  • separate:按列分割
    table_sep <- separate(table3,rate,into=c("cases","pop"))
image.png
  • separate_rows:按行分割
    separate_rows(table3,rate)

    image.png

  • unite:分割完了再合并回去
    unite(table_sep,cases,pop,col="rate",sep="/")

    image.png

今天就到這里咯~~~

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

推薦閱讀更多精彩內容