R package: dplyr 無痛分析dataframe
文章推薦指數: 80 %
select. 挑選特定column出來 · filter. 自訂條件濾掉column中的資料 · arrange. 調整row排列順序 · mutate. 以現有的column資料做運算,形成新的column.
直接觀看文章
2016年01月08日2017年06月09日
在R裡面處理數據前處理時,dplyr是非常強大的一個封包,其主要設計的理念有三個:
整合所有在前處理數據會常用的“邏輯”,變成簡單易懂的函數,比如:過濾特定行、針對特定行資料作出彙整等等。
底層使用c++撰寫,讓其處理時速度較快
其在“輸入”的檔案支持性良好,支持多種資料庫的串接
dplyr是由HadleyWickham開發的,承接plyr的邏輯。
語法上加入pipeline的概念,可以寫得非常精簡。
dplyrpackage最重要的5個函數,其實就代表在資料前處理的普遍操作
select
挑選特定column出來
filter
自訂條件濾掉column中的資料
arrange
調整row排列順序
mutate
以現有的column資料做運算,形成新的column
summarise
將目前的資料做統計運算,形成統計結論
當然新版本的dplyr其實會把輸入的檔案,轉換成tbl/tibble的格式,在資料呈現和內建的處理邏輯會有些不同,可能要小心,這邊寫其中一個用原生data.frame處理邏輯轉入到使用dplyr可能會遇到的。
隨者使用tidyverse的包越來越多,會發現HadleyWickham有一套很棒的計畫在逐漸把R原生的"較不直覺的"語法改進。
以下分別示範在dplyr中這幾個用法:
使用常用的mtcars資料集做示範:
select
data("mtcars")
mtcars%>%str()
這筆資料由MotorTrendUS雜誌所提供,總共有32部介於1973-74年出產的汽車其性能的資訊。
Select:挑選特定欄位進行分析,其利害的地方其實是這個函數的子函數:
starts_with()挑選欄位名稱開頭有""字串的欄位
ends_with() 挑選欄位名稱結尾有""字串的欄位
contains() 挑選欄位名稱中包含""字串的欄位
matches() 挑選欄位名稱符合""字串的欄位
select(mtcars,starts_with("m"))
select(mtcars, ends_with("b"))
select(mtcars,contains("ra"))
select(mtcars,matches("a"))
select(mtcars,disp,am)
Filter:根據特定條件篩選資料
filter的使用就蠻直覺的,可以直接在後面接logical條件,且可以直接使用欄位名稱
filter(mtcars,cyl==8)
filter(mtcars,cyl<6)
#Multiplecriteria
filter(mtcars,cyl<6&vs==1)
filter(mtcars,cyl<6|vs==1)
#Multipleargumentsareequivalenttoand
filter(mtcars,cyl<6,vs==1)
這邊整理filter可以使用的一些“logic”表示法
Logicsymbol
==
等於
!=
不等於
>
大於
<
小於
%in%
包含於
is.na()
是否為NA值
Arrange:將資料根據特定欄位來排序
預設是將數值由小到大排下去,假如有NA值的話,直接排最後,使用desc則變成由大到小,其本身支持multiplearrange
arrange(mtcars,cyl,disp)
arrange(mtcars,desc(disp))
Mutate:由已有的行經過“處理(加減乘除等等)”,產生新的行
mutate(mtcars,displ_l=disp/61.0237)
Summarise:總結行資料,形成單一值
summarise的函數,可能是需要多點練習,才會比較熟稔他的邏輯,其就是將資料進行sum,mean,median等等,原本r語言中,用來進階統計內建函數可以上場的時候。
summarise(mtcars,mean(disp))
summarise(group_by(mtcars,cyl),mean(disp))
summarise(group_by(mtcars,cyl),m=mean(disp),sd=sd(disp))
其實除了這五個基本函數外,dplyr封包中有很多進階的功能,可以進一步來活用!
這邊有Rstudio精心整理的cheatsheet,可以用來幫助學習
分享此文:TwitterFacebook請按讚:喜歡正在載入...
文章分頁導航
ENCODEProject基因字典-幫人類基因序列寫註解GeneDock聚道科技
發表迴響取消回覆
在此輸入你的回應…
在下方填入你的資料或按右方圖示以社群網站登入:
電子郵件(必須填寫)(電子郵件地址不會公開)
名稱(必須填寫)
個人網站
您的留言將使用WordPress.com帳號。
( 登出 /
變更 )
您的留言將使用Twitter帳號。
( 登出 /
變更 )
您的留言將使用Facebook帳號。
( 登出 /
變更 )
取消
連結到%s
透過電子郵件通知我後續回應。
有新文章時用Email通知我。
Δ
搜尋:
近期文章
開源計算生物學工具列表
GinkgoBiowork–物種公司:想像未來生物化之產業體系
LondonCalling2022:第三代定序Oxfordnanopore年度盛會
重灌更新Pop!_OS:miniconda,R,Rstudio
自造系列-實驗室中的3D列印機:不僅僅是玩具
近期迴響
SofiaLambert在RNAseq:AnnotationBasedQuali…再訪Bioawk:定序序列分析…在awk裡好用的變數:FS,OFS,RS,ORS,NR…再訪Bioawk:定序序列分析…在awk進階筆記:字串處理再訪Bioawk:定序序列分析…在Bioawk:專門處理定序相關格式的awk(fasta,fa…使用區跨鏈打造去中心化科研DeSci…在社群、區塊鏈、NFT和新型態生技開源模式
文章存檔
2022年八月 (1)
2022年六月 (2)
2022年五月 (7)
2022年四月 (1)
2022年三月 (2)
2022年二月 (1)
2021年十二月 (1)
2021年八月 (2)
2021年七月 (1)
2021年六月 (1)
2021年二月 (1)
2020年十一月 (2)
2020年六月 (2)
2020年三月 (1)
2019年十月 (1)
2019年九月 (1)
2019年八月 (1)
2019年五月 (2)
2019年四月 (6)
2019年三月 (2)
2019年二月 (1)
2019年一月 (1)
2018年十二月 (1)
2018年十一月 (2)
2018年十月 (1)
2018年九月 (2)
2018年八月 (1)
2018年七月 (8)
2018年六月 (1)
2018年五月 (7)
2018年四月 (9)
2018年三月 (5)
2018年二月 (6)
2018年一月 (8)
2017年十二月 (2)
2017年十一月 (2)
2017年十月 (6)
2017年九月 (2)
2017年八月 (9)
2017年七月 (2)
2017年六月 (4)
2017年五月 (16)
2017年四月 (20)
2017年三月 (13)
2017年二月 (7)
2017年一月 (14)
2016年十二月 (10)
2016年十一月 (21)
2016年十月 (17)
2016年八月 (4)
2016年六月 (9)
2016年五月 (2)
2016年四月 (3)
2016年三月 (3)
2016年二月 (13)
2016年一月 (27)
2015年十二月 (1)
2015年十一月 (2)
2015年十月 (8)
分類
bioinformatics(5)
Biostatistics(1)
book(1)
cancer(3)
Code(3)
docker(1)
EnsemblAPI(2)
GeneOntology(4)
genedock實習準備(1)
ggplot2(1)
LDT(1)
MedicalInformation(3)
python(1)
R(7)
reddit(1)
RNAseq(9)
samtools(1)
Softward(2)
未分類(302)
其它
註冊 登入
訂閱網站內容的資訊提供
訂閱留言的資訊提供
WordPress.com
我們的基因體時代Our"Gene"ration
learningtogetherwithgreatscientist,codingandbioinformatics
搜尋:
近期文章
開源計算生物學工具列表
GinkgoBiowork–物種公司:想像未來生物化之產業體系
LondonCalling2022:第三代定序Oxfordnanopore年度盛會
重灌更新Pop!_OS:miniconda,R,Rstudio
自造系列-實驗室中的3D列印機:不僅僅是玩具
近期迴響
SofiaLambert在RNAseq:AnnotationBasedQuali…再訪Bioawk:定序序列分析…在awk裡好用的變數:FS,OFS,RS,ORS,NR…再訪Bioawk:定序序列分析…在awk進階筆記:字串處理再訪Bioawk:定序序列分析…在Bioawk:專門處理定序相關格式的awk(fasta,fa…使用區跨鏈打造去中心化科研DeSci…在社群、區塊鏈、NFT和新型態生技開源模式
文章存檔
2022年八月
2022年六月
2022年五月
2022年四月
2022年三月
2022年二月
2021年十二月
2021年八月
2021年七月
2021年六月
2021年二月
2020年十一月
2020年六月
2020年三月
2019年十月
2019年九月
2019年八月
2019年五月
2019年四月
2019年三月
2019年二月
2019年一月
2018年十二月
2018年十一月
2018年十月
2018年九月
2018年八月
2018年七月
2018年六月
2018年五月
2018年四月
2018年三月
2018年二月
2018年一月
2017年十二月
2017年十一月
2017年十月
2017年九月
2017年八月
2017年七月
2017年六月
2017年五月
2017年四月
2017年三月
2017年二月
2017年一月
2016年十二月
2016年十一月
2016年十月
2016年八月
2016年六月
2016年五月
2016年四月
2016年三月
2016年二月
2016年一月
2015年十二月
2015年十一月
2015年十月
分類
bioinformatics
Biostatistics
book
cancer
Code
docker
EnsemblAPI
GeneOntology
genedock實習準備
ggplot2
LDT
MedicalInformation
python
R
reddit
RNAseq
samtools
Softward
未分類
其它
註冊 登入
訂閱網站內容的資訊提供
訂閱留言的資訊提供
WordPress.com
分類
bioinformatics
Biostatistics
book
cancer
Code
docker
EnsemblAPI
GeneOntology
genedock實習準備
ggplot2
LDT
MedicalInformation
python
R
reddit
RNAseq
samtools
Softward
未分類
追蹤
已追蹤
我們的基因體時代Our"Gene"ration
加入其他58位關注者
我要註冊
已經有WordPress.com帳號了?立即登入。
我們的基因體時代Our"Gene"ration
自訂
追蹤
已追蹤
註冊
登入
複製短網址
回報此內容
以閱讀器檢視
管理訂閱
收合此列
載入迴響中...
發表迴響…
電子郵件(必要)
名稱(必要)
網站
%d位部落客按了讚:
延伸文章資訊
- 1第15 天:資料處理技巧(2) · 輕鬆學習R 語言
運算子稱作Pipeline,它是進階的R 語言使用者在需要呼叫多次函數時候會採用的運算 ... 在 filter() 函數中我們輸入要篩選的資料框,以及依據什麼條件進行篩選,舉例來 ...
- 2R语言日常笔记(1)filter函数- 腾讯云开发者社区
R语言日常笔记(1)filter函数. 在处理数据时,过滤数据是最基本的操作之一。 如果想删除一部分无效或者根本不感兴趣的数据。 dplyr有filter()函数 ...
- 3輕鬆學習R 語言:使用dplyr 處理資料框 - Medium
dplyr 套件中的filter() 函數. 在 filter() 函數中我們輸入要篩選的資料框,以及依據什麼判斷條件進行篩選,舉例來說我們可以 ...
- 4使用dplyr做資料變換(filter,arrange,缺失值) - iT 邦幫忙
[R語言]資料分析讀書心得05---使用dplyr做資料變換(filter,arrange,缺失值) ... 接下來我們來看下一個函數arrange ,顧名思義就是重排,使用方法與filter ...
- 5dplyr 数据操作数据过滤(filter) - molearner - 博客园
在R的使用过程中我们几乎都绕不开Hadley Wickham 开发的几个包,前面说过的ggplot2、reshape2以及即将要讲的dplyr 因为这几个包可以非常轻易的使我们 ...