R語言數(shù)據(jù)處理:飛機(jī)航行距離與到達(dá)延誤時間有什么關(guān)系(精編版)_第1頁
R語言數(shù)據(jù)處理:飛機(jī)航行距離與到達(dá)延誤時間有什么關(guān)系(精編版)_第2頁
R語言數(shù)據(jù)處理:飛機(jī)航行距離與到達(dá)延誤時間有什么關(guān)系(精編版)_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、r 語言數(shù)據(jù)處理:飛機(jī)航行距離與到達(dá)延誤時間有什么關(guān)系數(shù)據(jù)挖掘入門與實(shí)戰(zhàn)公眾號:datadw 數(shù)據(jù)分析有一半以上的時間會花在對原始數(shù)據(jù)的整理及變換上,包括選取特定的分析變量、匯總并篩選滿足條件的數(shù)據(jù)、排序、加工處理原始變量并生成新的變量、以及分組匯總數(shù)據(jù)等等。這一點(diǎn),我想大部分使用excel 的童鞋都深有體會,寫論文時,這么多的數(shù)據(jù)進(jìn)行處理,手動匯總、篩選、變換,工作量實(shí)在是太大。而本文介紹的dplyr 包簡直就是hadley wickham (ggplot2包的作者,被稱作“一個改變r 的人”)大神為我們提供的“數(shù)據(jù)再加工”神器啊。本文試圖通過一個案例,對神奇的dplyr 包的一些常用功能做

2、簡要介紹。在此拋磚引玉,歡迎廣大盆友拍磚。先放上實(shí)踐課的一個問題:航行距離與到達(dá)延誤時間有什么關(guān)系? 帶著這個問題,我們將首先使用dplyr 包對給出的航班數(shù)據(jù)進(jìn)行處理。1.dplyr 包的安裝加載與示例數(shù)據(jù)準(zhǔn)備1.1 安裝 dplyr 包腳本輸入代碼: install.packages(dplyr) #加載 dplyr 包library(dplyr)1.2安裝 nycflights13包,該軟件包中的飛機(jī)航班數(shù)據(jù)將用于本文中dplyr 包相關(guān)函數(shù)的演示。腳本輸入代碼: install.packages(nyclights13) #加載nyclights13library(nyclights1

3、3)flights #查看數(shù)據(jù)表dim(flights) # 查看變量的維數(shù)輸出結(jié)果如下:如圖可知,nycflights13是一個 data.frame類型的對象,包含336776條數(shù)據(jù)記錄、 19 個變量。在處理數(shù)據(jù)之前,讓我們再來回顧一下數(shù)據(jù)處理的一般步驟:選擇子集、列名重命名、刪除缺失數(shù)據(jù)、處理日期、數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)排序接下來,就可以進(jìn)行數(shù)據(jù)處理了:2.數(shù)據(jù)處理 2.1 選擇子集所謂選擇子集,就是選擇出能夠?qū)崿F(xiàn)分析目標(biāo)的變量,本次數(shù)據(jù)分析的目標(biāo)是得出航行距離與延誤時間的關(guān)系, 因此,相應(yīng)的子集就是以下幾個字段:year 航班日期 -年 month 航班日期 -月 day 航班日期 -月

4、dep_delay 起飛延遲時間 (分)arr_delay 到達(dá)延遲時間 (分)distance 航行里程(英里)dest 目的地為此,我們首先使用dpylr 包里的 select 函數(shù),進(jìn)行變量篩選:腳本輸入代碼: myflights myflights #查看數(shù)據(jù)表如圖,子集選擇完畢。2.2 列名重命名為了讓列名簡單易懂,可以使用 rename 函數(shù),進(jìn)行列名重命名。腳本輸入代碼:myflights myflights重命名完畢。 2.3 刪除缺失數(shù)據(jù)我們采用 dplyr 包中的 filter() 函數(shù),進(jìn)行缺失數(shù)據(jù)的刪除。腳本輸入代碼: myflights myflights 由圖可知,

5、我們首先采用is.na() 函數(shù)找出缺失值,再采用邏輯運(yùn)算符“!x”將限定有效數(shù)據(jù),最后用filter() 函數(shù)“過濾”得到有效數(shù)據(jù),成功地刪除了缺失數(shù)據(jù)(由原先的336,776 個數(shù)據(jù)變?yōu)?327,346 個數(shù)據(jù))。2.4 數(shù)據(jù)排序?yàn)榱藬?shù)據(jù)的整齊性,我們可以選擇相應(yīng)的變量進(jìn)行排序。這里要穿插一個排序函數(shù) arrange() ,默認(rèn)情況下, 為升序排列, 也可以對列名加 desc() 進(jìn)行降序排序。 腳本輸入代碼: myflights myflights如圖所示,數(shù)據(jù)按照變量arr_delay( 到達(dá)延遲時間(分))進(jìn)行降序排列。 3.數(shù)據(jù)計算數(shù)據(jù)處理之后,就進(jìn)入計算分析步驟啦。在這個環(huán)節(jié),主

6、要?dú)v經(jīng)三個過程:數(shù)據(jù)分組(split ) :可以指定目標(biāo)變量,將數(shù)據(jù)進(jìn)行分組。由于本次分析的目標(biāo)是找出航行距離與到達(dá)延誤時間的關(guān)系,所以我們得根據(jù)到達(dá)目的地對數(shù)據(jù)進(jìn)行分組,從而計算出不同目的地的平行航行距離以及平均延誤時間;應(yīng)用函數(shù) (apply) :對不同組的數(shù)據(jù),應(yīng)用相應(yīng)函數(shù)獲取所需統(tǒng)計指標(biāo)。比如本次不同目的地的平行航行距離以及平均延誤時間;組合結(jié)果(combine) :將計算后的統(tǒng)計指標(biāo)值與第一步當(dāng)中對應(yīng)的分組進(jìn)行組合。3.1 數(shù)據(jù)分組 dplyr 包里的分組是由group_by() 函數(shù)實(shí)現(xiàn)的,腳本輸入代碼:by_dest class(by_dest)by_dest由圖可知,經(jīng)分組后,

7、一共有104 組數(shù)據(jù),即本次分析的目的地有104個。 3.2 應(yīng)用函數(shù)及組合結(jié)果我們使用 dplyr 包中的 summarize() 函數(shù),進(jìn)行數(shù)據(jù)統(tǒng)計指標(biāo)的獲取及組合。計算出不同目的地的平行航行距離以及平均延誤時間。腳本輸入代碼:delay_sum dist = mean(distance, na.rm = true),delay = mean(arr_delay, na.rm = true)delay_sum delay_sum從上圖可得知104 個目的地的航班數(shù)排序。為了統(tǒng)計的科學(xué)合理性,需要對數(shù)據(jù)量太少的組別進(jìn)行剔除,即剔除噪音數(shù)據(jù),再次使用filter()函數(shù)剔除,剔除限度設(shè)為cou

8、nt20 。腳本輸入代碼:delay_sum delay_sum 20)如上圖可知,剩余97 組數(shù)據(jù),即本次參與統(tǒng)計的目的地有97 個。ps.這里穿插一個好用的工具,“管道”,即通過使用操作符把數(shù)據(jù)集名作為開頭, 然后依次對此數(shù)據(jù)進(jìn)行多步操作。這種運(yùn)算符的編寫方式使得編程者可以按數(shù)據(jù)處理時的思路寫代碼, 一步一步操作不斷疊加,在程序上就可以非常清晰的體現(xiàn)數(shù)據(jù)處理的步驟與背后的邏輯。通過管道的連接方式,讓數(shù)據(jù)或表達(dá)式的傳遞更高效,使用向右操作符 % , 可以直接把數(shù)據(jù)傳遞給下一個函數(shù)調(diào)用或表達(dá)式。(% 是最常用的一個操作符,就是把左側(cè)準(zhǔn)備的數(shù)據(jù)或表達(dá)式,傳遞給右側(cè)的函數(shù)調(diào)用或表達(dá)式進(jìn)行運(yùn)行,可以

9、連續(xù)操作就像一個鏈條一樣。)拿上述的代碼進(jìn)行舉例,在沒用管道之前,代碼是這樣的:by_dest delay_sum dist = mean(distance, na.rm = true),#計算平均航行距離delay = mean(arr_delay, na.rm = true)#計算平均延誤時間delay_sum delay_sum 20)# 剔除噪音數(shù)據(jù)delay_sum# 顯示列表用了管道“% ”,代碼是這樣的: delay_sum % # 將右側(cè)航行數(shù)據(jù)賦值給左側(cè)delay_sumgroup_by(destination) % #對 delay_sum進(jìn)行分組 summarise( c

10、ount = n(),dist = mean(distance, na.rm = true),delay = mean(arr_delay, na.rm = true) % #對分組后的delay_sum進(jìn)行計算統(tǒng)計 filter(count 20)#對統(tǒng)計結(jié)果進(jìn)行噪音剔除delay_sum#顯示列表果然簡潔了很多!4.數(shù)據(jù)顯示所謂一圖勝千言啊,在大數(shù)據(jù)可視化普及的今天更是這樣。本次同樣使用hadley wickham 大神( ggplot2包的作者) 貢獻(xiàn)的 ggplot2 包進(jìn)行繪圖。 調(diào)用 ggplot() 函數(shù)進(jìn)行繪圖,腳本輸入代碼:ggplot(data = delay_sum) +geom_point(mapping = aes(x = dist, y = delay) +#繪制平均航程( dist

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論