學(xué)習(xí)小組Day6筆記--胡瑩

前兩天一直覺得R太難了,學(xué)的頭大,通過今天的學(xué)習(xí),終于讓我擯棄前嫌,開始喜歡上了R,真的是功能強(qiáng)大又簡(jiǎn)潔,非常友好啊。
今天的主要是通過對(duì)R語(yǔ)言中tidyr包的學(xué)習(xí),來(lái)認(rèn)識(shí)R包的作用。

準(zhǔn)備工作

一、 如何獲取

方法1:去百度/谷歌XX小抄
方法2:找Rstudio的cheatsheet網(wǎng)站(網(wǎng)速好慢的)
https://www.rstudio.com/resources/cheatsheets/
方法2.我們教程里用到的包都可以到生信星球公眾號(hào)回復(fù)相應(yīng)的包名來(lái)獲取
---摘自生信星球教程

二、了解tidyr

簡(jiǎn)單的說,這個(gè)包的作用就是“tidy”你的數(shù)據(jù)!把你要用的數(shù)據(jù)處理成標(biāo)準(zhǔn)而統(tǒng)一的數(shù)據(jù)框(Tidy Data),從而進(jìn)行進(jìn)一步的數(shù)據(jù)處理和作圖。
功能

(1)數(shù)據(jù)框的變形
(2)處理數(shù)據(jù)框中的空值
(3)根據(jù)一個(gè)表格衍生出其他表格
(4)實(shí)現(xiàn)行或列的分割和合并
---摘自生信星球教程

三、安裝tidyr包
準(zhǔn)備工作---打開RStudio,設(shè)置工作目錄

> getwd()
[1] "C:/Users/Administrator/Documents"
> setwd("C:/Users/Administrator/Desktop/RData")
> getwd()
[1] "C:/Users/Administrator/Desktop/RData"

1.檢查是否安裝

library(tidyr)
Error in library(tidyr) : 不存在叫‘tidyr’這個(gè)名字的程輯包

2.下載并安裝tidyr
install.packages("tidyr")
Tips:若安裝報(bào)錯(cuò),則更改RStudio的鏡像為國(guó)內(nèi)的(在安裝R/RStudio那一節(jié)的教程有提到,不再贅述)。

3.重新加載tidyr
library(tidyr)

四、數(shù)據(jù)框小常識(shí)

1.新建數(shù)據(jù)框
后面的學(xué)習(xí)會(huì)需要我們新建數(shù)據(jù)框,所以要提前get這個(gè)技能。

語(yǔ)法示例:

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

tips:

  • rep---重復(fù),括號(hào)中填要重復(fù)的字符和重復(fù)次數(shù)。
  • paste---連接兩個(gè)字符串,括號(hào)要填兩個(gè)代連接字符并指定分隔符(sep),沒有分隔符就填sep=“”。
  • 1:3---表示從1到三。如需一列中需要填入三個(gè)無(wú)規(guī)律的數(shù)字,可以用向量c(1,3,4),同樣如果填的是字符串也需要加雙引號(hào),例如c("doudou","huahua","xiaoyu")。
    ---摘自生信星球教程

2.了解概念:key-value--“鍵值對(duì)”
表示一種對(duì)應(yīng)關(guān)系?!版I”和“值”都是列名,如SampleName和Expression的對(duì)應(yīng)。
Tips:本節(jié)似乎沒有用到,雖然在度娘上搜索學(xué)習(xí)了一下,感覺自己沒有什么深刻的認(rèn)識(shí)。

3.Tips

  • 函數(shù)后面一般都要加括號(hào),括號(hào)里第一個(gè)參數(shù)是都數(shù)據(jù)框名
  • 字符串要加雙引號(hào)(行名和列名也是字符串,但是可以不用加),其他單元格(姑且這么叫了)里出現(xiàn)的字符串要加。
  • 行 raw
    列 column,簡(jiǎn)化寫法為col
    ---摘自生信星球教程

四、認(rèn)識(shí)Tidy Data

這是一種組織表格數(shù)據(jù)的方式,提供了一種能夠跨包使用的“統(tǒng)一”的數(shù)據(jù)格式。


TidyData

tidyr的基本操作

一、Reshape Data(數(shù)據(jù)重塑)

  • 新建數(shù)據(jù)框a。
 a <- data.frame(country=c("a","B","C"),`1999`=paste(c(0.7,37,212),"K"),`2000`=paste(c(2,80,213),"K"))
> a
  country X1999 X2000
1       a 0.7 K   2 K
2       B  37 K  80 K
3       C 212 K 213 K
  • gather函數(shù)
    將寬數(shù)據(jù)變成長(zhǎng)數(shù)據(jù)格式
    1.語(yǔ)法
    gather(data, key, value, …, na.rm = FALSE, convert = FALSE)
    data:需要被轉(zhuǎn)換的寬形表
    key:將原數(shù)據(jù)框中的所有列賦給一個(gè)新變量key
    value:將原數(shù)據(jù)框中的所有值賦給一個(gè)新變量value
    …:可以指定哪些列聚到同一列中
    na.rm:是否刪除缺失值
    2.示例
gather(a,"year","cases",X1999,X2000)
  country  year cases
1       a X1999 0.7 K
2       B X1999  37 K
3       C X1999 212 K
4       a X2000   2 K
5       B X2000  80 K
6       C X2000 213 K

3.Tips:三種命令比較
gather(a,X1999,X2000,key = "year",value = "cases")#正常的做法
gather(a,"year","cases",X1999,X2000) #推薦的偷懶做法
gather(a,year,cases,-country) #-country的意思就是合并除country外剩下的列。

  • spread函數(shù)
    將長(zhǎng)數(shù)據(jù)變成寬數(shù)據(jù)格式
    spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE)
    data:為需要轉(zhuǎn)換的長(zhǎng)形表
    key:需要將變量值拓展為字段的變量
    value:需要分散的值
    fill:對(duì)于缺失值,可將fill的值賦值給被轉(zhuǎn)型后的缺失值

二、Handle Missing Values(處理丟失的數(shù)據(jù))
當(dāng)某些單元格有空值的情況下,需要處理這些空值。

  • 讀取示例數(shù)據(jù)
X <- read.csv('doudou.txt')
> X
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA

Tips: read.csv()優(yōu)點(diǎn)
1.支持R和Excel
2.默認(rèn)分隔符是“,”,導(dǎo)出時(shí)也不會(huì)默認(rèn)加引號(hào)。
3.轉(zhuǎn)換txt不會(huì)變亂碼

  • 刪除整行
    drop_na():有空值的,整行刪除掉
    括號(hào)里填數(shù)據(jù)框名,依據(jù)的列名(有空值那一列的列名)
drop_na(X,X2)
  X1 X2
1  A  1
4  D  3
  • 根據(jù)上下文(瞎)蒙一個(gè)
    fill(),根據(jù)上一行的數(shù)值填充上.
fill(X,X2)
  X1 X2
1  A  1
2  B  1
3  C  1
4  D  3
5  E  3
  • 同一列的空值填上同一個(gè)數(shù)
    replace_na(),空值填進(jìn)去特定的一個(gè)數(shù)值(還是在應(yīng)付)
    括號(hào)里填數(shù)據(jù)框名,要填的列名=要填的值
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(把空值的位置補(bǔ)全)
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.7 K 2 K  
 2 a       0.7 K 213 K
 3 a       0.7 K 80 K 
 4 a       212 K 2 K  
 5 a       212 K 213 K
 6 a       212 K 80 K 
 7 a       37 K  2 K  
 8 a       37 K  213 K
 9 a       37 K  80 K 
10 B       0.7 K 2 K  
# ... with 17 more rows

四、split cells(把一列拆成兩列或多列)

  • 建立新數(shù)據(jù)框
b <- data.frame(country=c("A","B","C"),year=c(1999,2000,2001),rate=c("1999-1","2000-2","2001-3"))
> b
  country year   rate
1       A 1999 1999-1
2       B 2000 2000-2
3       C 2001 2001-3
  • separate:按列分割
    1.語(yǔ)法
    separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE, convert = FALSE, extra = “warn”, fill = “warn”, …)
    data:為數(shù)據(jù)框
    col:需要被拆分的列
    into:新建的列名,為字符串向量
    sep:被拆分列的分隔符
    remove:是否刪除被分割的列
    2.示例
separate(b,rate,into=c("cases","pop"),sep = "-")
  country year cases pop
1       A 1999  1999   1
2       B 2000  2000   2
3       C 2001  2001   3
  • separate_rows:按行分割
separate_rows(b,rate,sep = "-")
  country year rate
1       A 1999 1999
2       A 1999    1
3       B 2000 2000
4       B 2000    2
5       C 2001 2001
6       C 2001    3
  • unite:分割完了再合并回去
    1.語(yǔ)法:
    unite(data, col, …, sep = “_”, remove = TRUE)
    data:為數(shù)據(jù)框
    col:被組合的新列名稱
    …:指定哪些列需要被組合
    sep:組合列之間的連接符,默認(rèn)為下劃線
    remove:是否刪除被組合的列
    2.示例
unite(b,year,rate,col = "year",sep = "-")
  country        year
1       A 1999-1999-1
2       B 2000-2000-2
3       C 2001-2001-3

Tips:這個(gè)合并結(jié)果和我想象的不一樣,嗯....還需要再研究研究。

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

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

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