2020年9月4日 星期五

8_資料探索最佳工具_dplyr_filter

 在上一階段都在講ggplt2使用的資料集有鐵達尼、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)

遲到兩個小時的航班總共有10,200個航班;若你要看到所有的變數可寫成以下

View(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

沒有留言:

張貼留言

無現金支付的反思!

  **購物經歷** - 作者花費大量時間尋找立燈,最終在IKEA購買了一個649元的立燈 - 在IKEA附近停車場遇到只接受無現金支付的情況,被迫註冊並使用Line Pay **無現金支付的觀察** - 作者認為Line Pay作為前端介面,有助於提高停車場付費效率 - 作者預...