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 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告