日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dplyr-高效的数据变换与整理工具--转载

發(fā)布時間:2024/3/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dplyr-高效的数据变换与整理工具--转载 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、背景簡介

在數(shù)據(jù)分析工作中,經(jīng)常需要對原始的數(shù)據(jù)集進行清洗、整理以及變換。常用的數(shù)據(jù)整理與變換工作主要包括:特定分析變量的選取、滿足條件的數(shù)據(jù)記錄的篩選、按某一個或幾個變量排序、對原始變量進行加工處理并生成新的變量、對數(shù)據(jù)進行匯總以及分組匯總,比如計算各組的平均值等。

其實,上述的數(shù)據(jù)處理與變換工作在任何一種SQL語言(如Oracle,MySQL)中都非常容易處理,但是R語言作為一門編程語言,如何高效地完成上述類似SQL語言的數(shù)據(jù)處理功能?本文介紹的R語言dplyr包正是這方面工作的有力武器之一。

dplyr包是 Hadley Wickham (ggplot2包的作者,被稱作“一個改變R的人”)的杰作, 并自稱 a grammar of data manipulation, 他將原本plyr 包中的ddply()等函數(shù)進一步分離強化,專注接受dataframe對象, 大幅提高了速度, 并且提供了更穩(wěn)健的與其它數(shù)據(jù)庫對象間的接口。

本文試圖對該dplyr包的一些基礎(chǔ)且常用的功能做簡要介紹。主要包括:

  • 變量篩選函數(shù) select
  • 記錄篩選函數(shù) filter
  • 排序函數(shù) arrange
  • 變形(計算)函數(shù) mutate
  • 匯總函數(shù) summarize
  • 分組函數(shù) group_by
  • 多步操作連接符 %>%
  • 隨機抽樣函數(shù) sample_n,sample_frac
  • 001.png

    2、dplyr包使用介紹

    2.1 dplyr包的安裝加載與示例數(shù)據(jù)準備

    安裝dplyr包。

    install.packages("dplyr") library(dplyr)

    安裝hflights包,該軟件包中的飛機航班數(shù)據(jù)將用于本文中dplyr包各個函數(shù)的演示。

    install.packages("hflights") library(hflights)

    通過以下代碼,簡單了解示例數(shù)據(jù)集hflights。

    class(hflights);dim(hflights) head(hflights)

    輸出結(jié)果如下:
    hflights是一個data.frame類型的對象,包含227496條數(shù)據(jù)記錄、21個變量,head函數(shù)展示了前6條數(shù)據(jù)記錄。

    03.png

    在利用dplyr包處理數(shù)據(jù)之前,需要將數(shù)據(jù)裝載成dplyr包的一個特定對象類型(data frame tbl / tbl_df),也稱作 tibble 類型,可以用 tbl_df函數(shù)將數(shù)據(jù)框類型的數(shù)據(jù)裝載成 tibble 類型的數(shù)據(jù)對象。

    packageVersion("dplyr") tbl_hflights<-tbl_df(hflights) class(tbl_hflights) tbl_hflights

    輸出結(jié)果如下:可以看到,將hflights轉(zhuǎn)換成tbl_df類型后,R語言打印數(shù)據(jù)集tbl_hflights的數(shù)據(jù)時,僅打印了適合屏幕寬度的數(shù)據(jù),屏幕顯示不下的剩余兩個變量的數(shù)據(jù)(CancellationCode , Diverted )并沒有打印出來,這使得屏幕上打印出來的數(shù)據(jù)可讀性更強,也更美觀。此外,還在每一列變量名稱的下面顯示了變量的類型。

    04.png

    ==p.s. 可以用packageVersion函數(shù)查看dplyr包的版本==

    2.2 變量篩選select

    select函數(shù)可以通過指定列名選擇指定的變量進行分析。

    # 選擇制定的變量 select(tbl_hflights,Year,Month,DayofMonth,FlightNum,Distance) # 用類似于生成數(shù)字序列的方式選擇變量 # 選擇Year開始一直到ArrTime結(jié)束的所有變量 3:10 select(tbl_hflights,Year:ArrTime) # 也可以按照倒過來的順序選擇 select(tbl_hflights,ArrTime:Year) # 除了選擇變量,也可以刪除指定的變量 select(tbl_hflights,-Year,-Month,-DayofMonth,-FlightNum,-Distance) select(tbl_hflights,-(Year:ArrTime)) 05.png
    06.png
    07.png
    08.png
    09.png

    2.3 數(shù)據(jù)記錄篩選filter

    filter函數(shù)按照指定的條件篩選符合條件中邏輯判斷要求的數(shù)據(jù)記錄,類似于SQL語句中的where語句中的篩選條件。

    # 選擇2011年1月而且起飛時間為1400的所有數(shù)據(jù)記錄 filter(tbl_hflights,Year == 2011, Month == 1, DepTime == 1400) # '且'的關(guān)系也可以用&符號表示,也就是列出的所有條件同時滿足 filter(tbl_hflights,Year == 2011 & Month == 1 & DepTime == 1400) # 選擇起飛時間在1400之前的航班 filter(tbl_hflights,Year == 2011 & Month == 1 & DepTime <= 1400) # '或'的關(guān)系用|符號表示。選擇起飛時間為1400或者1430的航班,且UniqueCarrier為'AA' filter(tbl_hflights,Year == 2011 & Month == 1 & (DepTime == 1400 | DepTime == 1430) & UniqueCarrier == 'AA')

    上述R語句輸出結(jié)果如下:


    10.png
    11.png
    12.png
    13.png

    2.4 數(shù)據(jù)排序arrange

    arrange函數(shù)按給定的列名進行排序,默認為升序排列,也可以對列名加desc()進行降序排序。

    tbl_hflights1<-select(filter(tbl_hflights,Year == 2011 & Month == 1 & DepTime == 1400),Year:ArrTime,AirTime) # 將數(shù)據(jù)按照ArrTime升序排序 arrange(tbl_hflights1,ArrTime) # 將數(shù)據(jù)先按照AirTime降序,再按照ArrTime升序排列 arrange(tbl_hflights1,desc(AirTime),ArrTime)

    上述R語句輸出結(jié)果如下:

    14.png
    15.png

    2.5 變量變換/重構(gòu)mutate

    mutate函數(shù)可以基于原始變量重新計算得到新的變量,在做數(shù)據(jù)分析預處理的時候經(jīng)常會用到該功能。

    # 由ArrTime-DepTime得到航班的飛行所用時長,并存儲在DurTime變量中 # 飛行所用時長(單位:分鐘)的計算方式為:小時數(shù)*60+分鐘數(shù) # 同時將飛行的分鐘數(shù),換算成秒。 # 優(yōu)勢在于可以在同一語句中對剛增加的列進行操作。 tbl_hflights2<-mutate(tbl_hflights1, DurTime = (as.numeric(substr(ArrTime,1,2)) - as.numeric(substr(DepTime,1,2)))*60 + as.numeric(substr(ArrTime,3,4)) , Dur_Time1 = DurTime * 60) tbl_hflights2

    上述R語句輸出結(jié)果如下:

    16.png

    2.6 數(shù)據(jù)匯總summarize

    summarize函數(shù)實現(xiàn)對數(shù)據(jù)的匯總,比如求和、計算平均值等。

    # 計算航班平均飛行時長 summarize(tbl_hflights2,avg_dur = mean(DurTime),sum_air = sum(AirTime))

    上述R語句輸出結(jié)果如下:


    18.png

    2.7 數(shù)據(jù)分組group_by

    group_by函數(shù)實現(xiàn)對數(shù)據(jù)進行分組,結(jié)合summarize函數(shù),可以對分組數(shù)據(jù)進行匯總統(tǒng)計。

    # 按照航空公司分組進行匯總 summarise(group_by(tbl_hflights, UniqueCarrier), m = mean(AirTime,na.rm = TRUE), sd = sd(AirTime,na.rm = TRUE), cnt = n(), me = median(AirTime,na.rm = TRUE))

    上述R語句輸出結(jié)果如下:

    19.png

    2.8 多步操作連接符%>%

    dplyr包里還新引進了一個操作符,%>%, 使用時把數(shù)據(jù)集名作為開頭, 然后依次對此數(shù)據(jù)進行多步操作。
    這種運算符的編寫方式使得編程者可以按數(shù)據(jù)處理時的思路寫代碼, 一步一步操作不斷疊加,在程序上就可以非常清晰的體現(xiàn)數(shù)據(jù)處理的步驟與背后的邏輯。

    # 對數(shù)據(jù)進行分布處理:分組-匯總-排序-打印 tbl_hflights %>%group_by(UniqueCarrier) %>%summarize(m = mean(AirTime,na.rm = TRUE), sd = sd(AirTime,na.rm = TRUE)) %>%arrange(desc(m),sd) %>%head(10)

    上述R語句輸出結(jié)果如下:

    20.png

    2.9 挑選隨機樣本sample_n, sample_frac

    sample_n隨機選出指定個數(shù)(樣本容量)的樣本數(shù);sample_frac隨機選出指定百分比(占整個數(shù)據(jù)集總體百分比)的樣本數(shù)。

    # 隨機抽取10個樣本 sample_n(tbl_hflights,10) # 隨機抽取10%的樣本 tbl_hflights %>% sample_frac(0.1) %>%select(Year:UniqueCarrier) %>%group_by(UniqueCarrier) %>%summarize(m = mean(ArrTime,na.rm = TRUE), cnt = n()) %>% arrange(desc(m))

    上述R語句輸出結(jié)果如下:

    21.png
    22.png

    3、參考文獻與其他學習資料

    3.1 dplyr包中自帶的參考資料查看

    可以通過如下名稱查看dplyr包中自帶的參考資料。

    # 查看自帶的參考資料 vignette(package = "dplyr") vignette("introduction", package = "dplyr") 23.png 24.png

    3.2 本文寫作用到的參考鏈接

    R語言擴展包dplyr筆記
    R語言擴展包dplyr——數(shù)據(jù)清洗和整理

    3.3 RStudio官網(wǎng)的cheatsheet

    data-wrangling-cheatsheet

    26.png 25.png

    作者:monkeylan
    鏈接:https://www.jianshu.com/p/b2abad66cb01
    來源:簡書
    簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

    轉(zhuǎn)載于:https://www.cnblogs.com/nkwy2012/p/9236933.html

    總結(jié)

    以上是生活随笔為你收集整理的dplyr-高效的数据变换与整理工具--转载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产欧美在线一区 | 日韩偷拍一区 | 久久五月天婷婷 | 欧美性在线视频 | 亚洲综合久久久 | 少妇偷人精品无码人妻 | 欧美大屁股熟妇bbbbbb | 欧美日韩视频 | 美国三级视频 | 成人在线网站 | 欧美激情15p | 色窝网| 男人操女人的软件 | 欧美激情一区二区三区免费观看 | 日韩高清片 | 图片区视频区小说区 | 国产sss | 在线观看香蕉视频 | 三级性生活视频 | 亚洲国产日韩一区无码精品久久久 | 综合久久99| 久久99精品波多结衣一区 | 国产剧情在线一区 | 日韩一区二区三区免费 | 欧美第二页 | www.色99 | 精品国产一区在线观看 | 色婷婷激情综合 | 综合色99| 成人在线观看免费网站 | 九色91| 日韩免费 | 亚洲成成品网站 | 天天摸天天爽 | 亚洲精品99久久久久中文字幕 | 中国老妇性视频 | 韩国精品视频 | a级片网址 | 日韩国产欧美视频 | 蜜桃久久av一区 | 日韩欧美在线观看免费 | 色婷婷影院| 国产天堂第一区 | 深田咏美在线x99av | 亚洲精品婷婷 | wwwxx日本| jizz国产| 国产免费观看视频 | 米奇狠狠干| 亚洲一线二线在线观看 | 人妻 日韩精品 中文字幕 | 日本一区二区三区在线观看 | av在线毛片 | 青青一区二区 | 中文字幕一区二区三区av | 少妇闺蜜换浪荡h肉辣文 | 久草这里只有精品 | 五月婷婷六月色 | 亚洲另类av | 孕妇丨91丨九色 | 欧美丝袜视频 | 日本中文字幕免费观看 | 日韩和欧美一区二区 | 福利社av| 伊人色在线视频 | 日韩卡一卡二 | 香蕉视频久久久 | 国产aⅴ精品一区二区三区久久 | 亚洲一二三区视频 | 男男黄网站 | 免费在线你懂的 | 第一福利视频 | 夜色资源网 | 91免费看视频| 香蕉综合网 | 国产的av | 成人三级视频 | jjzz在线| 中国女人做爰视频 | 九九色 | 日韩av片在线播放 | 国产初高中真实精品视频 | 国产日韩精品中文字无码 | 蜜臀av性久久久久av蜜臀妖精 | 蜜桃成人无码区免费视频网站 | 国产性爱精品视频 | 欧美色图第一页 | 国产麻豆剧传媒精品国产av | 国产精品无码AV无码国产 | va欧美 | 72pao成人国产永久免费视频 | 男同av在线观看一区二区三区 | 国产精品中文久久久久久 | 欧美中字| 午夜在线视频播放 | 毛片视频免费观看 | 亚洲午夜精品久久久久久浪潮 | 精品免费看 | free黑人多人性派对hd |