Tidyverse 簡介


Tidyverse 是一個 R 包集合,旨在有效地協作和處理資料。Tidyverse 包是開源的,並由資料科學社群不斷改進。資料科學家必須對 Tidyverse 涵蓋的每個包有基本的瞭解。我們將深入探討所有八個包——purrr、ggplot2、dplyr、tidyr、stringr、tibble、readr 和 forcats。

Tidyverse 包

Tidyverse 將 R 中的幾個包組合在一起。它包含以下包:

包名稱

用途

purrr

用於函數語言程式設計

ggplot2

用於建立圖形

dplyr

用於資料操作

tidyr

提供建立整潔資料的函式

stringr

提供處理字元資料的函式

tibble

提供強大的表格系統

readr

提供快速匯入資料的方法

forcats

提供解決因子常見問題的工具

安裝 Tidyverse

在繼續之前,我們需要在 R 中安裝 tidyverse 包。您可以使用以下命令在 CRAN 中安裝此包:

install.packages("tidyverse")

上面提到的所有 tidyverse 包都已安裝。無需單獨安裝這些包。

匯入 Tidyverse

要將 tidyverse 匯入您的 R 指令碼,您可以使用 library() 函式並將 tidyverse 包作為引數傳遞:

library("tidyverse")

在 Tidyverse 中讀取資料

R 中的“readr”包允許我們藉助以 read% 和 write% 開頭的函式從不同檔案格式讀取和寫入資料。這些函式執行速度非常快,並且可以平滑地處理有問題的標題名稱。

這些函式列在下面:

函式

作用

read_csv()

處理分號或逗號分隔符

read_csv2()

處理分號或逗號分隔符

read_delim()

處理通用分隔符

read_table()

處理包含空格的資料

示例

讓我們看一個說明 R 中 read_csv() 函式工作原理的示例:

# Import library library("tidyverse") # Import a CSV file myFile <- read_csv("https://people.sc.fsu.edu/~jburkardt/data/csv/addresses.csv") # Print the file myFile

輸出

  John                      Doe        `120 jefferson st.`    River…¹  NJ     `08075`
  <chr>                     <chr>      <chr>                  <chr>    <chr>  <chr>  
1 "Jack"                    McGinnis   "220 hobo Av."         Phila    PA     09119  
2 "John "Da Man""           Repici     "120 Jefferson St."    Rivers…  NJ     08075  
3 "Stephen"                 Tyler      "7452 Terrace "At t…   SomeTo…  SD     91234  
4  NA                       Blankman   NA                     SomeTo…  SD     00298  
5 "Joan "the bone", Anne"   Jet        "9th, at Terrace plc"  Desert…  CO     00123  

在 Tidyverse 中進行資料整理

dplyr 包

dplyr 包允許我們有效地處理表格資料。它為我們提供了動詞函式,例如select(),用於根據作為start_with()contains() 函式傳遞的一些條件提取特定列。

示例

考慮以下說明這些函式工作原理的程式:

library(dplyr) # Create a data frame dataframe <- data.frame( Name = c("Bhuwanesh", "Anil", "Jai", "Naveen"), Physics = c(98, 87, 91, 94), Chemistry = c(93, 84, 93, 87), Mathematics = c(91, 86, 92, 83) ) # Create a data frame print(dataframe)

輸出

       Name Physics Chemistry Mathematics
1 Bhuwanesh      98        93          91
2      Anil      87        84          86
3       Jai      91        93          92
4    Naveen      94        87          83

使用 starts_with() 函式僅列印“Ph”資料:

library(dplyr) # Create a data frame dataframe <- data.frame( Name = c("Bhuwanesh", "Anil", "Jai", "Naveen"), Physics = c(98, 87, 91, 94), Chemistry = c(93, 84, 93, 87), Mathematics = c(91, 86, 92, 83) ) print(select(dataframe, starts_with("Ph")))

輸出

  Physics
1      98
2      87
3      91
4      94

讓我們列印所有包含“mist”的內容:

library(dplyr) # Create a data frame dataframe <- data.frame( Name = c("Bhuwanesh", "Anil", "Jai", "Naveen"), Physics = c(98, 87, 91, 94), Chemistry = c(93, 84, 93, 87), Mathematics = c(91, 86, 92, 83) ) print(select(dataframe, contains("mist")))

輸出

  Chemistry
1        93
2        84
3        93
4        87

如您在輸出中看到的,已提取以“Ph”開頭幷包含“mist”的列名。

summary() 函式

此函式生成資料集的摘要。

print(summary(iris))

輸出

  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
       Species  
 setosa    :50  
 versicolor:50  
 virginica :50  

summary() 函式已生成 iris 模型的摘要。

filter() 函式

此函式用於選擇滿足特定條件的資料。例如,考慮以下顯示數學成績在 90 到 93 之間的資料的程式:

示例

library(dplyr) # Create dataframe dataframe <- data.frame( Name = c("Bhuwanesh", "Anil", "Jai", "Naveen"), Physics = c(98, 87, 91, 94), Chemistry = c(93, 84, 93, 87), Mathematics = c(91, 86, 92, 83) ) # Display print(dataframe %>% filter(Mathematics > 90 & Mathematics < 94))

輸出

       Name Physics Chemistry Mathematics
1 Bhuwanesh      98        93          91
2       Jai      91        93          92

arrange() 函式

此函式用於根據特定列對資料集進行排序。例如,考慮以下根據物理成績排序顯示資料集的程式:

示例

library(dplyr) dataframe <- data.frame( Name = c("Bhuwanesh", "Anil", "Jai", "Naveen"), Physics = c(98, 87, 91, 94), Chemistry = c(93, 84, 93, 87), Mathematics = c(91, 86, 92, 83) ) # Display the data print(arrange(dataframe, Physics))

輸出

       Name Physics Chemistry Mathematics
1      Anil      87        84          86
2       Jai      91        93          92
3    Naveen      94        87          83
4 Bhuwanesh      98        93          91

rename() 函式

此函式用於重新命名資料框中的列。第一個引數對應於新名稱,等號後面的第二個引數對應於舊名稱。例如,考慮以下將“化學”列重新命名為“CHEMISTRY”的程式:

示例

library(dplyr) dataframe <- data.frame( Name = c("Bhuwanesh", "Anil", "Jai", "Naveen"), Physics = c(98, 87, 91, 94), Chemistry = c(93, 84, 93, 87), Mathematics = c(91, 86, 92, 83) ) # Display the dataset # after renaming a column print(rename(dataframe, CHEMISTRY = Chemistry))

輸出

       Name Physics CHEMISTRY Mathematics
1 Bhuwanesh      98        93          91
2      Anil      87        84          86
3       Jai      91        93          92
4    Naveen      94        87          83

在 Tidyverse 中進行資料視覺化

ggplot2 包

ggplot2 包是一個專門用於資料視覺化的開源包。這是由 Hardley Wickham 設計的一個功能強大的包。此包為我們提供了各種函式。一個重要的函式是 ggplot()。此函式顯示資料集的資料視覺化。

示例

考慮以下程式:

library(ggplot2) # Plot the data visualization ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = Petal.Length) ) + geom_point()

輸出

如您在輸出中看到的,ggplot() 函式已繪製其視覺化結果。

使用 purrr 包進行函數語言程式設計

purrr 包用於在 R 中實現函數語言程式設計。purrr 包為我們提供了 map_() 系列函式,使用這些函式,我們可以實現函數語言程式設計以獲得與 for 和 while 迴圈相同的結果。

讓我們討論其中的 map() 函式。這是最基本的函式。它接受一個向量和一個函式作為引數,然後為向量中的每個元素呼叫該函式。

示例

考慮以下程式:

library("purrr") myVector <- c(8, 3, 7, 2, 11, 20) addByThree <- function(x) + 3 print(map(myVector, addByThree))

輸出

[[1]]
[1] 3

[[2]]
[1] 3

[[3]]
[1] 3

[[4]]
[1] 3

[[5]]
[1] 3

[[6]]
[1] 3

如您在上面的輸出中看到的,在將 3 加到給定向量的所有元素之後,會生成一個列表。

使用 stringr 包進行字串操作

Stringr 包用於在 R 中進行字串操作。它提供以 string% 開頭的函式。其最常用的函式是str_replace() 和 str_length()。str_replace() 函式將模式或字串替換為另一個字串。讓我們考慮以下說明 str_replace() 函式工作原理的程式:

示例

library("stringr") # Create a list of strings myList <- c("tutorialspoint", "pointer", "pointable") # Replace the string equal to "point" # withPointprint(str_replace(myList, "point", "Point"))

輸出

[1] "tutorialsPoint" "Pointer"        "Pointable"     

如您在輸出中看到的,包含“point”的字串已替換為“Point”。

示例

讓我們考慮另一個示例

library("stringr") myString = "Bhuwanesh Nainwal" # Replace if string starts with "Bhuwanesh" print(str_replace(myString, "^Bhuwanesh", "Harshit")) # Replace if string ends with "Nainwal" print(str_replace(myString, "Nainwal$", "")) str_length(myString)

輸出

[1] "Harshit Nainwal"
[1] "Bhuwanesh "
17

如您在輸出中看到的,以“Bhuwanesh”開頭的字串已替換為“Harshit”,以“Nainwal”結尾的字串已替換為空字串。

str_length() 函式用於將模式或字串替換為另一個字串。

讓我們考慮以下說明 str_length() 函式工作原理的程式:

示例

library("stringr") myList <- c("tutorialspoint", "pointer", "pointable") print(str_length(myList))

輸出

[1] 14  7  9

結論

在本教程中,我們討論了包的宇宙,即 tidyverse。我們討論了這些包的工作原理並進行了說明。本教程肯定有助於您提高資料科學領域的知識。

更新於: 2023 年 1 月 17 日

590 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.