Tidyverse简介
被称为Tidyverse的R包集合是以合作和有效处理数据为目标而创建的。Tidyverse包是开源的,并由数据科学社区不断改进。数据科学家必须对tidyverse伞下的每一个包有基本的了解。所有八个软件包–Purr, ggplot2, dplyr, tidyr, stringr, tibble, readr, and forcats–将被深入介绍。
Tidyverse套餐
包装名称 | 使用方法 |
---|---|
purrr | 用于功能编程 |
ggplot2 | 用于创建图形 |
dplyr | 用于数据操作 |
tidyr | 提供函数来创建整洁的数据 |
stringr | 提供处理字符数据的功能 |
tibble | 提供坚固的工作台系统 |
readr | 提供一个快速的方法来导入数据 |
f或者cats | 提供解决因子的常见问题的工具 |
安装Tidyverse
在进一步行动之前,我们需要在R中安装tidyverse包。你可以使用CRAN中的以下命令来安装这个包—
install.packages("tidyverse")
上面提到的所有tidyverse软件包都已安装。不需要单独安装这些软件包。
导入tidyverse
要将tidyverse导入到你的R脚本中,你可以使用library()函数,并将tidyverse包作为参数传入 —
library("tidyverse")
读取Tidyverse中的数据
R中的 “readr “包允许我们在以read%和write%开头的函数的帮助下,从不同的文件格式中读取和写入文件。这些函数的工作速度非常快,并能顺利处理有问题的头文件名。
这些功能列举如下 –
Function | 工作 |
---|---|
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
让我们打印所有包含 “雾 “的东西-
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()函数已经产生了虹膜模型的摘要。
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
重命名()函数
该函数用于重命名数据框架中的一个列。第一个参数对应的是新名称,等号后的第二个参数对应的是旧名称。例如,考虑下面的程序,将化学列重命名为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。我们讨论了这些包如何工作,并对它们进行了说明。本教程肯定有助于你提高你在数据科学领域的知识。