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。我们讨论了这些包的工作原理并进行了说明。本教程肯定有助于您提高数据科学领域的知识。