在上一階段都在講ggplot2使用的資料集有鐵達尼、mpg、diamond,直接對變數或變數之間進行統計,這個方式是很有效也很快速了解你的資料集分析目的,但就像前篇所提到這世界的資料都不是如此完美時,甚至筆數可能是幾千萬筆或變數超過40個以上,此時你對資料的掌握被這資料集量體給迷惑無法下手。
所以在本階段會介紹R的filter、arrange、select、mutate、summarise、指令組合應用等,你可能會覺得像SQL語法,的確剛開始我也是怎麼認為,當我面對龐大的資料集時我發現的確解決我的問題並配合ggplot2的繪圖完成資料分析,相對也是跟之前一樣以範例為主。
在進行需載入下方套件
library(nycflights13)
library(tidyverse)
flights
flights資料集來自美國運輸統計局,該資料集包含2013年從紐約市出發的所有336,776個航班,相關的變數說明輸入?flights
filter如同他的名字相同,可設定條件過濾出資料集內你想要的資訊,而程式的寫法很簡單,例如我要查12月15號所有航班
filter(flights,month==12,day==15)
在12月15日的航班總共有890架次的航班,在dplyr套件會將結果以10筆資料呈現,讓你了解你篩選出來的結果,這個好處是可加快你的探索速度,若你的每次篩選結果都全部跑出10萬或20萬筆的資料,會影響你對資料探索的速度。
在任何程式語言當要篩選你想要的資料時,不外乎就有比較包含>、>=、<,<=、!=(不等於)、==(相等),千古不變!但在使用dplyr的相關函式時須使用==,不能使用=。
再來也是所有程式都具備的邏輯運算符號,當然R的表達方式有所不同,但是觀念都跟其他語法都相同,包含&為“ and”、|為“ or”、!“ not”。
所以filter使用比較運算和邏輯運算篩選出你想要的結果;例如女朋友說我可能只有11月和12月有空至於幾號不知道,做為碼農的一員隨即將11月和12月的航班調出
filter(flights,month==11 | month==12)
以上就是filter函式的用法,現在想像我們就美國交通運輸局的資訊部門的資料分析師,部長需要知道紐約航班的資料分析,我們可以勝任嗎?
一、到達延遲時間超過兩個小時的航班
filter(flights,flights$arr_delay>=120)
二、飛往休斯敦和霍比機場(IAH或HOU)的航班
filter(flights,flights$dest==c("IAH","HOU" ))
三、由美聯航或達美航空運所營運的航班給我列出
filter(flights,flights$carrier==c("UA","DL"))
四、暑假是旅遊旺季請列出7、8、9月的航班
view(filter(flights,flights$month == c(7,8,9)))
五、延誤了至少一個小時,但在飛行中卻超過了30分鐘的航班
filter(flights,flights$arr_time>=30,flights$arr_delay>=60)`
下一篇會介紹會介紹arrange()以以及select,dplyr的函數單一拆來看真的不難,但組合使用並配合分析目標其實是很燒腦,就像英文一樣26個單字都看得懂,組合成單字就有時看的懂有時看不懂,在組成文章....而dplyr就是這種感覺