當前位置:
首頁 > 最新 > NGS科研必備!數據整合神器之dplyr包

NGS科研必備!數據整合神器之dplyr包

dplyr包可用於處理dataframe格式數據,相較於它的前身plyr包,大幅提高了速度,本文著重介紹在數據整合時使用頻率較高的幾個函數,定會讓你在數據整合過程中更為方便快捷。

dplyr也是大神HadleyWickham的大作,HadleyWickham可謂是改變了R的人,其代表作品還有ggplot2、resape等非常有名的軟體包,先用大神的帥照鎮樓:

dplyr包的開源代碼可在github上閱讀,軟體包安裝如下:

#安裝大神所有的軟體包:

install.packages("tidyverse")

#或者只安裝dplyr:

install.packages("dplyr")

#也可安裝開發版的dplyr:

#安裝github上的包,需要先安裝devtools工具包:

#install.packages("devtools")

devtools::install_github("tidyverse/dplyr")

本文主要介紹5個常用的函數:

mutate() 對已有列數據變換並添加新的列,類似標準函數transform

select() 按照列名篩選列,可結合starts_with,ends_with,contains,matches,one_of,num_range和everything等使用

filter() 按照已定條件對行做過濾,類似標準函數subset

arrange() 對數據進行排序,類似標準函數order

summarise() 對數據進行匯總操作,可結合group_by使用,類似標註函數aggregate

install.packages("dplyr")

library(dplyr)

#用iris數據集作為演示,用head()函數查看其前6行:

head(iris)

mutate()函數的使用:

mutate()函數是對已有列數據變換並添加為新的列,類似標準函數transform:

#添加一個新的列new,並且new是Sepal.Length和Sepal.Width的乘積:

df_mutate

head(df_mutate)

select() 函數的使用:

按照列名篩選列,可結合starts_with,ends_with,contains,matches,one_of,num_range和everything等使用:

#變數名稱以Petal開頭的變數

df_select

#變數名稱以Width結尾的變數

df_select

#變數名稱包含etal的變數

df_select

#變數名稱匹配t的變數

df_select

#只篩選Petal.Length,Petal.Width兩個變數

df_select

#篩選所有的變數

df_select

#把需要的變數賦值給vars,然後用one_of模式篩選

vars

df_select

filter() 函數的使用:

按照已定條件對行做過濾,類似標準函數subset,在使用filter之前需要了解一下幾個邏輯操作符:

·==,>,>=,

·&,,!,xor()

·is.na()

·between(),near()

#篩選Species是setosa的數據

df_filter

#篩選Sepal.Length大於5,並且Species是setosa的數據

df_filter 5 & Species == "setosa")

#篩選Sepal.Length大於5,並且Species包含在c("setosa","versicolor")中的數據

df_filter 5 & Species %in%c("setosa","versicolor"))

arrange() 函數的使用:

對數據進行排序,類似標準函數order:

#按照Sepal.Length從小到大排序

df_arrange

#雙變數排序,按照Sepal.Length從小到達,並且按照Sepal.Width從大到小排序

# desc()表示從大到小

df_arrange

summarise函數的使用:

對數據進行匯總操作,可結合group_by使用:

#計算Sepal.Length的平均值和標準差:

df_summarise

#按照Species分組,計算Sepal.Length的平均值和標準差

iris_groups

df_summarise

# dplyr的計算是以tbl格式返回的,我們可以轉成dataframe,當然這步沒必要,但是為了方便顯示:

本文重點介紹這5個函數,當然dplyr包還有其他比較方便的函數,比如join,set,distinct,sample,bind,ifelse等函數,也是非常有用,感興趣的同學可以去學習一下。

/End.

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 公眾號 的精彩文章:

朵嘉濃星星:斷篇了
「競技神」號航空母艦:被風暴吹垮艦艏甲板
人體肌群訓練講解之肱二/三頭肌
法律思維:王寶強離婚案的「制勝法寶」
比特幣:潰不成軍、最後的撤退

TAG:公眾號 |