學習小組Day6筆記--??D


? ? ? ? 生信起步第六站-R大哥的“魔法”技能。


之前一直很“怨恨”R包,主要因為各種安裝可能會遇到各種麻煩,但不可否認的是,正是因為這些“麻煩”,才讓我發現R大哥是個很有內涵的家伙,技能很多嘛。今天,他將變身“巴啦啦大魔哥”???♂?,打開他的一個包裹,給我們展示的就是“如何對數據施魔法”。


Tydir包裹準備

一、獲得包裹

(一) 獲取包裹小抄(生信星球tidyr)

(二) 安裝包裹-極簡安包

1 Rstudio控制臺輸入library(tidyr),檢查是否已經安裝過
2-1安裝過:congratulation!
2-2沒安過:鍵入install.packages("tidyr")自動安裝,再加載tidyr看一下
(若報錯,換國內鏡像:Tools→Global Options→Packages→CRAN mirror→Change→China開頭幾個選項里,哪個近選哪個)


二、了解包裹

(一)認識Tidy Data

Tidy Data我更喜歡把它聯想成R大哥變魔術的輔助動物-那只泰迪熊??:這個泰迪就是一個管理小隊長,可以把數據歸攏的齊齊刷刷???♀?最簡單的理解示例就好比用Excel錄入原始數據,你得把它變成SPSS格式才能進行統計處理吧,tidy就是中間這個“變”的環節。

(二) 初步了解tydir功能

(1)數據框的變形
(2)處理數據框中的空值
(3)根據一個表格衍生出其他表格
(4)實現行或列的分割和合并
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??數據→數據框→數據處理+作圖

(三)了解數據框

1 新建數據框(直接賦值給bioplanet)
bioplanet<-data.frame(GeneID = rep("gene1",times=4),SampleName =paste("Sample",1:4,sep=""),Expression=c(14,19,18,15))
新建數據框
2 了解含義
  • data.frame:數據框。
  • rep:重復,括號中填要重復的字符和重復次數。
  • sep:分隔符。
  • paste:連接兩個字符串。括號要填兩個代連接字符并指定分隔符(sep),沒有分隔符就填sep=“”
  • raw行;col列(column)。
  • 列名=列值(列名要加雙引號)如:"gene1""Sample"
  • 概念:key-value--“鍵值對”,是“兩個列名”的一種對應關系,如SampleName和Expression的對應。
3 注意事項
  • 函數后面要加括號,括號里第一個參數是數據框名 如complete(table,nesting……)里的table
  • 字符串要加雙引號:行名和列名部分可以不用加,但其他里的要加。

施法

1.Reshape Data

歸攏數據

首先,建立一個施法對象--數據
a<-data.frame(country=c("A","B","C"),"1999"=paste(c(0.7,37,212),"K"),"2000"=paste(c(2,80,213),"K"))
新建數據

然后,變變變??

  • 標準修改gather(a,X1999,X2000,key = "year",value = "cases")

    標準修改.png

  • 簡便修改gather(a,"year","cases",X1999,X2000)

    簡便修改

    錯誤修改案例gather(a,X1999,X2000,"year","cases")這告訴了我們其所在位置的合理性
    錯誤修改案例

  • 排除法修改gather(a,year,cases,-country)

    排除法修改

    注:花花說這樣的報錯可以忽略喲~~


2.Handle Missing Values

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

  • 導入數據:X<-read.csv('doudou.csv')
  • 導出數據:write.csv(X,'doudou.csv')
    導入導出數據
  • 刪除空值行drop_na(X,X2)
  • 根據上一行填空值fill(X,X2)
  • 空值填特定值replace_na(X,list(X2=2))
    刪除、添加、重填加

3. Expand Tables

補空位和展列表

  • complete(把空值的位置補全)
    complete(X,nesting(X1),fill = list(X2=5))
    補全空位值(補為5)

  • expand(列出每列值所有可能的組合)光看括號里的字就能理解我算你贏??
    expand(Superman,GeneId,SampleName,Expression)
    expand一下

    看結果是不是就明白點了?是的??
    就是把原來的數據排列組合再生成新表

4.split cells

分分合合

首先建立一個table.txt
table數據
然后,變變變??

這塊呢花花沒有給“投食兒”,所以要根據原示例代碼自學一下。先拿按列分割開刀

separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE,
convert = FALSE, extra = “warn”, fill = “warn”, …)

乍一看,懵了吧?對!那就拆一拆,解讀一下吧~
data:數據框(前面講了,bingo)
col:需要被拆分的列(bingo)
into:新建的列名,為字符串向量
sep:被拆分列的分隔符(bingo)
remove:是否刪除被分割的列(Linux就接觸過了,bingo)

好的,那就試一下吧~

  • 按列分割separate

    按列分割的table

  • 按行分割separate_rows
    原理同上,繼續試一試~

    按行分割table

  • 分割完了再合并回去unite
    思路:把最原始table的兩列數據拆成了三列,再把這個三列合并回最初的兩列

    合并回去


Xmind

Xmind

? ? ? ? 兩天下來,R大哥還是可以的。
? ? ? ? 摒除成見,友好相處,才是王道??
? ? ? ? 深呼吸,放輕松,保持微笑??


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