使用 Dplyr 在 R 中排列、過濾和分組行

使用 Dplyr 在 R 中排列、過濾和分組行

本教程是關於dplyr包的討論的延續。您將學習如何在 R 中排列、過濾和分組行。

上一課講的是列操作。這一次,重點將放在dplyr中的行操作上。

我們將介紹基礎知識,包括排序和過濾數據集以及聚合和匯總記錄。為了讓您大致了解本課的預期內容,請考慮 MS Excel 中的數據透視表。

目錄

入門

在 RStudio 中打開一個新的 R 腳本。

與列操作課類似,本次演示將使用Lahman 數據集包。通過快速谷歌搜索下載它。

要將 Lahman 包引入 R,請運行library (Lahman)。要啟用dplyr包,請運行library (tidyverse)。另外,請記住,R 中命名約定的最佳做法是使用小寫字母,因此將Teams分配到teams中。

使用 Dplyr 在 R 中排列、過濾和分組行

行操作的基本函數

1. 在 R 中排列行

dpylr 中的第一行操作是arrange()。此函數允許您對行重新排序。它的工作原理是首先排列數據框df,然後排列給定的字段。

使用 Dplyr 在 R 中排列、過濾和分組行

例如,讓我們按teamID排序。運行arrange (teams, teamID)

使用 Dplyr 在 R 中排列、過濾和分組行

如果想讓它們按降序排列,需要使用desc()函數。

例如,如果您想按年份降序排序,請運行arrange (teams, desc(yearID))

使用 Dplyr 在 R 中排列、過濾和分組行

執行此操作時,您不會將輸出分配回teams。您只是在控制台中看到結果。

也可以按多個條件排序。比如你想先按teamID再按yearID降序排序,只需要運行這段代碼:

使用 Dplyr 在 R 中排列、過濾和分組行

當您對行進行排序時,您並沒有更改數據。數據只是四處移動。沒有添加或刪除任何內容。

2. 在 R 中過濾行

過濾器 ( )函數根據所選條件添加或刪除數據。它的基本代碼是:

使用 Dplyr 在 R 中排列、過濾和分組行

例如,我們獲取所有yearID大於或等於2000的數據。按照過濾函數的格式輸入需要的信息。然後,運行它。不要忘記將其分配給新對象。在這種情況下,它被分配給modern

使用 Dplyr 在 R 中排列、過濾和分組行

要檢查行是否確實被過濾,可以使用dim ( )函數。它給出了數據框中的行數和列數。

如果您運行dim (teams),您將看到數據框有 2,955 行和 48 列。

使用 Dplyr 在 R 中排列、過濾和分組行

如果您在modern上運行dim函數,您會看到行數已減少到 630,而列數保持不變。

使用 Dplyr 在 R 中排列、過濾和分組行

由於某些記錄超過 2000 年,行已被截斷。

按多個字段過濾行

也可以通過 R 中的多個字段過濾行。您需要使用ANDOR語句。

例如,讓我們按地區過濾團隊。在這種情況下,將創建一個新對象ohio 。過濾條件是teamID應該只包括 Cleveland AND Cincinnati。

使用 Dplyr 在 R 中排列、過濾和分組行

您需要使用雙等號( == ) 來檢查是否相等。如果只使用一個等號,R 會將其視為賦值運算符。使用與號 ( & ) 表示AND。

要檢查,請使用dim函數。您會看到行數為 0。

使用 Dplyr 在 R 中排列、過濾和分組行

這意味著沒有任何球隊同時位於克利夫蘭和辛辛那提。

接下來,讓我們試試 Cleveland OR Cincinnati。OR 運算符由管道運算符 ( | )表示。因此,您需要做的就是用管道運算符替換 & 符號,然後運行它。之後,再次運行dim函數。

使用 Dplyr 在 R 中排列、過濾和分組行

您會看到有 251 行而不是零行。

現在,如果您忘記使用兩個等號而只使用一個怎麼辦?這是發生了什麼:

使用 Dplyr 在 R 中排列、過濾和分組行

RStudio 將在控制台中顯示一條非常有用的錯誤消息,提醒您使用雙等號。

3. 在 R 中分組並彙總行

group by ( )函數允許您按選定的列聚合記錄,然後基於該聚合匯總另一列。

group by ( ) 函數遵循以下算法:

使用 Dplyr 在 R 中排列、過濾和分組行

例如,讓我們按teamID分組並將其分配給一個新對象。在這種情況下,新對象稱為teams_ID。然後,打印它。

使用 Dplyr 在 R 中排列、過濾和分組行

在控制台中,您會注意到第一行說它是tibble

使用 Dplyr 在 R 中排列、過濾和分組行

tibble是對基本數據框架的 tidyverse 改進。它是軟件包中的一項功能,可以增強和改進開箱即用的功能。

第二行是群組。因此,數據現在按 teamID 列分組。

使用 Dplyr 在 R 中排列、過濾和分組行

這樣,您現在就可以對這些組使用summarize ()函數。

使用 Dplyr 在 R 中排列、過濾和分組行

注意: summarize 函數可以帶有 s 或 z,具體取決於英式或美式英語的使用。

例如,讓我們匯總teams_ID並獲得一些基本的匯總統計信息。讓我們尋找每支球隊獲勝的平均值、最小值和最大值。請記住在選擇運行之前突出顯示整個代碼。

使用 Dplyr 在 R 中排列、過濾和分組行

然後您可以在控制台中看到顯示了每個團隊統計信息的摘要。這與您在其中聚合和匯總數據的數據透視表非常相似。


R 中的數據框:學習
R 中的基礎因子水平:使用分類變量和有序變量
使用 dplyr 在 R 中添加、刪除和重命名列

結論

回顧一下,已經討論了 dplyr 中的兩個操作。之前的教程側重於列操作。同時,本課程向您展示瞭如何使用RStudio 中的dplyr包執行行操作。具體來說,您學習瞭如何在 R 中排列、過濾和分組行。

接下來要學習的是如何結合這兩個操作。使用到目前為止您學到的所有函數將極大地幫助您在 R 中創建代碼。但是,更有用的技術是管道。這將有助於一切順利進行。因此,請確保也查看下一個教程。


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的