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" # with “Point” print(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。我們討論了這些包的工作原理並進行了說明。本教程肯定有助於您提高資料科學領域的知識。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP