使用dplyr進行數據操作(30個實例)

2021-02-19 R語言

dplyr軟體包是R中功能最強大,最受歡迎的軟體包之一。該軟體包由最受歡迎的R程式設計師Hadley Wickham編寫,他編寫了許多有用的R軟體包,如ggplot2,tidyr等。本文包括一些示例和如何使用使用dplyr軟體包來清理和轉換數據。這是一個關於數據操作和數據處理的完整教程。

什麼是dplyr?

dplyr是一個強大的R軟體包,用於處理,清理和匯總非結構化數據。簡而言之,它使得R中的數據探索和數據操作變得簡單快捷。

dplyr有什麼特別之處?

軟體包「dplyr」包含許多主要使用的數據操作功能,例如應用過濾器,選擇特定列,排序數據,添加或刪除列以及聚合數據。這個包的另一個最重要的優點是學習和使用dplyr函數非常容易。也很容易回想起這些功能。例如,filter()用於過濾行。

dplyr與基本R函數

dplyr函數處理速度比基本R函數快。 這是因為dplyr函數是以計算有效的方式編寫的。 它們在語法上也更穩定,並且比向量更好地支持數據幀。

SQL查詢與dplyr

數十年來人們一直在使用SQL來分析數據。 每個現代數據分析軟體如Python,R,SAS等都支持SQL命令。 但SQL從未被設計為執行數據分析。 它專為查詢和管理數據而設計。 有許多數據分析操作在SQL失敗或使簡單的事情困難。 例如,計算多個變量的中位數,將寬格式數據轉換為長格式等。而dplyr軟體包的設計目的是進行數據分析。

dplyr函數的名稱類似於SQL命令,如用於選擇變量的select(),group_by() - 通過對變量進行分組來組合數據,join() - 將兩個數據集合在一起。 還包括inner_join()和left_join()。 它也支持SQL常用的子查詢。

如何安裝和加載dplyr軟體包

要安裝dplyr軟體包,請鍵入以下命令。

install.packages("dplyr")

要加載dplyr包,請在下面輸入命令

library(dplyr)

常用的dplyr的函數

數據:各國的收入數據

在本教程中,我們使用以下數據,其中包含2002年至2015年各州產生的收入。注意:此數據不包含各州的實際收入數據。

該數據集包含51個觀測值(行)和16個變量(列)。 下面顯示了數據集前6行的快照。

數據集下載連結(密碼:9ny3)

如何加載數據

提交以下代碼。 在下面的代碼中更改文件路徑。

mydata <- read.csv("D:/datasets/sampledata.csv")

實例1:隨機選擇N行

sample_n函數從數據框(或表)中隨機選擇行。 函數的第二個參數告訴R要選擇的行數。

sample_n(mydata, 3)

實例2:隨機選擇總行的N%

sample_frac函數隨機返回N%的行。 在下面的例子中,它隨機返回10%的行。

sample_frac(mydata, 0.1)

實例3:基於所有變量(完整行)刪除重複行

distinct函數用於消除重複行

x1 <-  dplyr::distinct(mydata)

在此數據集中,沒有單個重複行,因此返回的行數與mydata中的行數相同。

實例4:基於單個變量刪除重複行

.keep_all函數用於保留輸出數據框中的所有其他變量。

x2 <- dplyr::distinct(mydata, Index, .keep_all= TRUE)

實例5:基於多個變量刪除重複行

在下面的例子中,我們使用兩個變量 - Index,Y2010來確定唯一性。

x3 <-  dplyr::distinct(mydata, Index, Y2010, .keep_all= TRUE)

實例6:選擇變量(或列)

假設你被要求只選擇幾個變量。 下面的代碼選擇變量「Index」,從「State」到「Y2008」的列。

mydata2 <- select(mydata, Index, State:Y2008)

實例7:刪除變量

變量前面的減號表示R放棄變量。

mydata3 <- select(mydata, -Index, -State)

上面的代碼也可以寫成:

mydata4 <- select(mydata, -c(Index, State))

實例8:選擇或刪除以」Y」開始的變量

starts_with()函數用於選擇以字母開頭的變量。

mydata5 <- select(mydata, starts_with('Y'))

在starts_with()之前添加一個負號表示將刪除以』Y』開始的變量

mydata6 <- select(mydata, -starts_with('Y'))

以下函數可幫助您根據名稱選擇變量。

實例9:選擇變量名中包含」l」的變量

mydata7 <- select(mydata, contains('l'))

實例10:重新排列變量

下面的代碼保持變量』State』在前面,其餘的變量跟隨其後。

mydata8 <- select(mydata, State, everything())

實例11:變量重命名

rename函數可用於重命名變量。
在下面的代碼中,我們將』Index』變量重命名為』Index1』。

mydata9 <- rename(mydata, Index1=Index)

names(mydata9)

實例12:選擇行

假設你需要子集數據。 您想過濾行並僅保留Index等於A的那些值。

mydata10 <- filter(mydata, Index == "A")

實例13:多重選擇標準

%in%運算符可用於選擇多個項目。 在下面的程序中,我們告訴R選擇Index列中的』A』和』C』行。

mydata11 <- filter(mydata, Index %in% c("A", "C"))

實例14:選擇標準中的』AND』條件

假設你需要應用』AND』條件。 在這種情況下,我們在「索引」欄中選擇』A』和』C』的數據,並在2002年收入超過130萬美元。

mydata12 <- filter(mydata, Index %in% c("A", "C") & Y2002 >= 1300000 )

實例15:選擇標準中的』OR』條件

『|』表示邏輯條件中的或。 它意味著這兩個條件中的任何一個。

mydata13 <- filter(mydata, Index %in% c("A", "C") | Y2002 >= 1300000)

實例16:非條件

「!」 符號用於反轉邏輯條件。

mydata13 <- filter(mydata, !Index %in% c("A", "C"))

實例17:包含條件

grepl函數用於搜索模式匹配。 在下面的代碼中,我們正在查找state列包含「Ar」的記錄。

mydata14 <- filter(mydata, grepl("Ar", State))

實例18:總結選定的變量

在下面的例子中,我們計算了變量Y2015的平均值和中位數。

summarise(mydata, Y2015_mean = mean(Y2015), Y2015_med=median(Y2015))

實例19:總結多個變量

在下面的例子中,我們計算了記錄的數量,變量Y2005和Y2006的平均值和中位數。 summarise_at函數允許我們通過名稱選擇多個變量。

summarise_at(mydata, vars(Y2005, Y2006), funs(n(), mean, median))

實例20:用自定義函數進行總結

我們也可以在匯總功能中使用自定義函數。 在這種情況下,我們計算記錄數,缺失值的數量,變量Y2011和Y2012的平均數和中位數。 點(.)表示函數的第二個參數中指定的每個變量。

summarise_at(mydata, vars(Y2011, Y2012),

            funs(n(), missing = sum(is.na(.)),

            mean(., na.rm = TRUE),

            median(.,na.rm = TRUE)))

實例21:總結所有的數字變量

summarise_if函數允許您有條件地總結。

summarise_if(mydata, is.numeric, funs(n(),mean,median))

或者

numdata <- mydata[sapply(mydata,is.numeric)]

summarise_all(numdata, funs(n(),mean,median))

實例22:總結因子變量

我們正在檢查分類(因子)變量中的級別/類別數量和缺失觀察數量。

summarise_all(mydata["Index"], funs(nlevels(.), nmiss=sum(is.na(.))))

實例23:按多個變量排序數據

arrange()函數的默認排序順序是遞增的。 在這個例子中,我們通過多個變量來排序數據。

arrange(mydata, Index, Y2011)

假設你需要按降序對其中一個變量進行排序,而對其他變量則按升序排序。

arrange(mydata, desc(Index), Y2011)

實例24:按分類變量匯總數據

我們通過變量Index計算變量Y2011和Y2012的變量的計數和均值。

t <- summarise_at(group_by(mydata, Index), vars(Y2011, Y2012), funs(n(), mean(., na.rm = TRUE)))

或者

t <- mydata %>% group_by(Index) %>%

 summarise_at(vars(Y2011:Y2015), funs(n(), mean(., na.rm = TRUE)))

實例25:過濾分類變量中的數據

假設您需要從「A」,「C」和「I」類別的變量索引中抽取前兩行。

t <- mydata %>% filter(Index %in% c("A", "C","I")) %>% group_by(Index) %>%

 do(head( . , 2))

實例26:通過分類變量選擇第三最大值

我們正在通過變量Index計算變量Y2015的第三個最大值。 以下代碼首先僅選擇兩個變量Index和Y2015。 然後它用』A』,』C』和』I』過濾變量索引,然後對變量進行分組,然後按降序對變量Y2015進行排序。 最後,它選擇第三行。

t <- mydata %>%

 select(Index, Y2015) %>%

 filter(Index %in% c("A", "C","I")) %>%

 group_by(Index) %>%

 do(arrange(.,desc(Y2015))) %>%  

 slice(3)

像SQL一樣,dplyr使用窗口函數來將數據分組。 它返回值的向量。 我們可以使用min_rank()函數來計算上例中的rank,

t <- mydata %>% select(Index, Y2015) %>%

 filter(Index %in% c("A", "C","I")) %>%

 group_by(Index) %>%

 filter(min_rank(desc(Y2015)) == 3)

實例27:總結,分組和排序

在這種情況下,我們通過變量Index來計算變量Y2014和Y2015的均值。 然後通過計算的變量Y2015的均值對結果進行排序。

t <- mydata %>%

 group_by(Index)%>%

 summarise(Mean_2014 = mean(Y2014, na.rm=TRUE),

           Mean_2015 = mean(Y2015, na.rm=TRUE)) %>%

 arrange(desc(Mean_2015))

實例28:創建一個新變量

以下代碼用變量Y2015除以Y2014的的值其命名為「change」。

mydata15 <- mutate(mydata, change=Y2015/Y2014)

實例29:將所有變量乘以1000

它創建新的變量並用後綴「_new」命名。

mydata11 <- mutate_all(mydata, funs("new" = .* 1000))

實例30:計算變量的排名

假設您需要計算變量Y2008至Y2010的排名。

mydata17 <- mutate_at(mydata, vars(Y2008:Y2010), funs(Rank=min_rank(.)))

您在閱讀中,有什麼見解,請評論。

連結:https://www.listendata.com/2016/08/dplyr-tutorial.html
版權聲明:作者保留權利,嚴禁修改,轉載請註明原文連結。

關於更多數據科學內容,請閱讀R語言系列文章。

數據人網是數據人學習、交流和分享的平臺http://shujuren.org 。專注於從數據中學習到有用知識。
平臺的理念:人人投稿,知識共享;人人分析,洞見驅動;智慧聚合,普惠人人。
您在數據人網平臺,可以1)學習數據知識;2)創建數據博客;3)認識數據朋友;4)尋找數據工作;5)找到其它與數據相關的乾貨。
我們努力堅持做原創,聚合和分享優質的省時的數據知識!
我們都是數據人,數據是有價值的,堅定不移地實現從數據到商業價值的轉換!

【R語言】公眾號,誠邀各位數據人投稿,您可以原創,也可以翻譯,小編微信:luqin360,等候您。

點擊閱讀原文,進入數據人網,學習數據知識。



數據人網(http://shujuren.org)誠邀各位數據人來平臺分享和傳播優質數據知識。


公眾號推薦:

360區塊鏈,專注於360度分享區塊鏈內容

    腳印英語,專注於分享實用口語內容。

相關焦點

  • R語言基於dplyr實現數據快捷操作
    R語言在處理大數據方面一直是被人詬病的地方,那麼有人就為R語言打造了一個dplyr包可以實現高效的數據預處理,減少內存的消耗,提升處理效率
  • R語言 | 數據操作dplyr包
    [更新~] Python網絡爬蟲與文本數據分析公眾號只帶著Python字眼,卻分享著R語言,不務正業,任性了~dplyr簡介dplyr是R語言的數據分析包,很像python中的pandas,能對dataframe
  • 強大的dplyr包實現數據預處理
    下面將介紹強大的dplyr包,其可以非常靈活、快速的實現數據的預處理。#tbl對象使用dplyr包預處理時建議使用tbl_df()函數或tbl_cube()函數或tbl_sql()函數將原數據轉換為tbl對象,因為dplyr包用C語言開發,對處理tbl對象是非常迅速的。
  • dplyr包-匯總數據的方法
    前三篇文章如下:1 dplyr包-列選擇的方法2 dplyr包-列變換的方法3 dplyr包-行選擇的方法前三篇文章,我們已經從數據的行與列角度,總結了dplyr包有效而高效地進行行與列的操作和處理,靈活使用dplyr包的函數集,便利我們對數據的整理工作。
  • 數據處理之——dplyr
    dplyr其實可以看做是plyr的升級版,dplyr中的d指dataframe,它專注於做基於數據框的處理。如果你熟悉了dplyr的這一套處理函數,它將會大大提升你處理數據的速度和效率。示例數據dplyr中使用的示例數據繼續沿用pgdat數據集,如果你想要獲取該數據集的原始碼,可以通過點擊微信公眾號右下角的案例數據得到。
  • dplyr中filter函數的總結
    先對filter函數的使用做一個詳細的總結。filter對行進行篩選filter是根據一定規則對data frame中的observation進行篩選,或者說是對行進行篩選。我們使用nycflights13包中的實例數據作為demo。1if(!
  • R數據分析:如何在R中使用mutate
    一個簡單數據清洗任務常常包括:從數據中選擇列設置數據行匯總數據匯總數據(計算匯總統計信息)排序數據創建新變量本文就只寫最後一個,即在R中使用mutate創建新變量。mutate的基礎知識在開始之前,我們先談談dplyr。
  • dplyr和tidyr簡介|數據處理
    數據處理兩大利器:dplyr和tidyr1 dplyr 簡介dplyr是Hadley Wickham
  • 強大的數據清理大師:dplyr
    在現實生活中,手頭上的數據往往是比較亂的,不整潔的,無法馬上進行作圖與統計分析的。
  • dplyr包-行選擇的方法
    這是dplyr包系列第三篇文章。前兩篇文章如下:1 dplyr包-列選擇的方法2 dplyr包-列變換的方法前兩篇文章是從數據列的角度做選擇和變換處理。這篇文章是從數據行的角度,描寫行選擇的一系列操作與方法。數據的行,可以看作為觀察、樣例、對象等。
  • 【R學習筆記】- 數據整形 - dplyr and tidyr
    準備數據我們用上次做最後一道二項分布檢驗的數據。7##  $ ill_number   : num  0 20 22 21##  $ P1           : num  0.63606 0.31063 0.05057 0.00274##  $ theory_family: num  71.2383 6.2126 0.5562 0.0192Syntax - Helpful conventions for wrangling使用
  • R數據科學--第九章 dplyr處理關係數據
    1.簡介• 合併連接:向數據框中加入新變量,新變量的值是另一個數據框中的匹配觀測。• 篩選連接:根據是否匹配另一個數據框中的觀測,篩選數據框中的觀測。• 集合操作:將觀測作為集合元素來處理 2. nycflights13除了flight外,還有另外四個相關數據框。分別描述航空公司、機場、飛機、天氣。我喜歡以標準表格的形式觀察每個數據框。
  • R語言dplyr包學習筆記(吐血整理宇宙無敵詳細版) - CDA數據分析師
    ,類似於transform() 函數,不同的是可以在同一語句中對剛增添加的列進行操作,mutate()返回的結果集會保留原有變量,transmute()只返回擴展的新變量,原數據集行名稱會被過濾掉1、mutate變量變形1.1 單個變量操作:mutate可以對數據框中已有的變量進行操作或者增加變量,值得稱讚的是,一段mutate
  • R包之dplyr--處理表格數據的好幫手
    R語言作為擁有優良統計血統的程式語言,天生就適合處理各種數據框。我們以一個tcga的表型文件為例。pheno = read.table(".2、mutate函數mutate函數可以對某一列的內容進行一些處理、改動。在sampletype,我們可以查看樣本的類型
  • R語言筆記-dplyr-2-表操作
    表操作基礎多表操作列操作基本操作多種函數功能當前列行操作構造數據集行匯總統計分組操作添加分組刪除分組變量動詞
  • 《實習日記》| 7月20日 R語言筆記——dplyr
    7月20日R語言筆記——dplyr7月20日R語言筆記——dplyr五個基礎函數1.mutate(),新增列2.select
  • R 數據處理(十一)—— dplyr
    R 數據處理(十一)1. 關係型數據很多數據分析都會涉及到多個表的操作,通常需要將這些表組合起來才能得到你想要的信息。多個數據表統稱為關係型數據,重要的是它們之間的關係,而不是僅僅單個數據表dplyr 提供了三類函數用於關係數據:過濾連接:根據一個數據中的值是否與另一個數據中的值匹配來過濾這些值這些操作類似於數據框操作,像 SQL 查詢數據的語句
  • dplyr | 數據導入和預處理的常用函數
    在正式分析數據前,我們通常需要先預處理一下數據,比如篩選有效樣本,定義變量格式,處理缺失值等,目的是把數據整理成比較清潔的形式,便於後續處理,而R的tidyverse系列工具包針對此提供了豐富多樣的處理方案。本篇內容主要介紹常用的數據導入函數和dplyr包中的一些重要函數。
  • 摘要:本實例使用C-A-D2008軟體進行影像與矢量數據疊加配準。
    本實例使用C-A-D2008軟體進行影像與矢量數據疊加配準。影像下載地圖下載器提供了投影變換工具,在軟體右側工具列表中;點擊「投影變換」工具彈出影像投影變換對話框。 若矢量數據為標準平面坐標,且若影像通過準確參數轉換到相應的坐標系,導入可準確與矢量數據匹配無需手動配準。否則進行手動配準影像,執行以下步驟。. 使用「工具」→「繪圖次序」→「後置」將影像圖片後置。使用「al」命令即對齊功能,在屏幕上指定一個以上參考點。按上面操作方式,添加一個以上參照點,添加3個參照點後會自動對齊。
  • 「R」dplyr 行式計算
    「原文來自:dplyr 文檔」上一篇:「R」dplyr 列式計算通常 dplyr 和 R 更適合對列進行操作,而對行操作則顯得更麻煩。這篇文章,我們將學習圍繞rowwise() 創建的 row-wise 數據框的 dplyr 操作方法。本文將討論 3 種常見的使用案例:這些問題通常可以通過 for 循環簡單地解決掉,但如果能夠自然地將其流程化將是一個非常好的方案。