iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

使用R進行探索式資料分析之初探系列 第 8

資料探索最佳工具_dplyr_filter()

  • 分享至 

  • xImage
  •  

在上一階段都在講ggplot2使用的資料集有鐵達尼、mpg、diamond,直接對變數或變數之間進行統計,這個方式是很有效也很快速了解你的資料集分析目的,但就像前篇所提到這世界的資料都不是如此完美時,甚至筆數可能是幾千萬筆或變數超過40個以上,此時你對資料的掌握被這資料集量體給迷惑無法下手。

所以在本階段會介紹R的filter、arrange、select、mutate、summarise、指令組合應用等,你可能會覺得像SQL語法,的確剛開始我也是怎麼認為,當我面對龐大的資料集時我發現的確解決我的問題並配合ggplot2的繪圖完成資料分析,相對也是跟之前一樣以範例為主。
在進行需載入下方套件

library(nycflights13)
library(tidyverse)
flights

flights資料集來自美國運輸統計局,該資料集包含2013年從紐約市出發的所有336,776個航班,相關的變數說明輸入?flights
https://ithelp.ithome.com.tw/upload/images/20200908/20120756g7EYxtbutU.png
filter如同他的名字相同,可設定條件過濾出資料集內你想要的資訊,而程式的寫法很簡單,例如我要查12月15號所有航班

filter(flights,month==12,day==15)

https://ithelp.ithome.com.tw/upload/images/20200908/20120756c6QhNWRr7K.png
在12月15日的航班總共有890架次的航班,在dplyr套件會將結果以10筆資料呈現,讓你了解你篩選出來的結果,這個好處是可加快你的探索速度,若你的每次篩選結果都全部跑出10萬或20萬筆的資料,會影響你對資料探索的速度。

在任何程式語言當要篩選你想要的資料時,不外乎就有比較包含>、>=、<,<=、!=(不等於)、==(相等),千古不變!但在使用dplyr的相關函式時須使用==,不能使用=。

再來也是所有程式都具備的邏輯運算符號,當然R的表達方式有所不同,但是觀念都跟其他語法都相同,包含&為“ and”、|為“ or”、!“ not”。

所以filter使用比較運算和邏輯運算篩選出你想要的結果;例如女朋友說我可能只有11月和12月有空至於幾號不知道,做為碼農的一員隨即將11月和12月的航班調出

filter(flights,month==11 | month==12)

https://ithelp.ithome.com.tw/upload/images/20200908/201207567rEsm62GDV.png

以上就是filter函式的用法,現在想像我們就美國交通運輸局的資訊部門的資料分析師,部長需要知道紐約航班的資料分析,我們可以勝任嗎?

一、到達延遲時間超過兩個小時的航班

filter(flights,flights$arr_delay>=120)

https://ithelp.ithome.com.tw/upload/images/20200908/20120756uQZhGbXB9c.png

二、飛往休斯敦和霍比機場(IAH或HOU)的航班

filter(flights,flights$dest==c("IAH","HOU" ))

https://ithelp.ithome.com.tw/upload/images/20200908/20120756nuGILo5Vl7.png

三、由美聯航或達美航空運所營運的航班給我列出

filter(flights,flights$carrier==c("UA","DL"))

https://ithelp.ithome.com.tw/upload/images/20200908/20120756XJdveM1FmZ.png

四、暑假是旅遊旺季請列出7、8、9月的航班

view(filter(flights,flights$month == c(7,8,9))) 

https://ithelp.ithome.com.tw/upload/images/20200908/20120756tp6wM1M5ud.png

五、延誤了至少一個小時,但在飛行中卻超過了30分鐘的航班

filter(flights,flights$arr_time>=30,flights$arr_delay>=60)`

https://ithelp.ithome.com.tw/upload/images/20200908/20120756ZKdREQsX60.png

下一篇會介紹會介紹arrange()以以及select,dplyr的函數單一拆來看真的不難,但組合使用並配合分析目標其實是很燒腦,就像英文一樣26個單字都看得懂,組合成單字就有時看的懂有時看不懂,在組成文章....而dplyr就是這種感覺


上一篇
geom_bar()函式的秘密
下一篇
資料探索最佳工具dplyr_arrange()、select()、mutata()
系列文
使用R進行探索式資料分析之初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言