R语言 用dplyr聚合和分析数据
dplyr包用于R语言,通过执行操作和转换对数据进行模拟。它可以通过以下命令安装到工作空间。
install.packages("dplyr")
在dplyr软件包中,有大量的内置方法可用于聚集和分析数据。其中一些方法如下。
使用过滤方法
R中的dplyr包中的过滤器方法是用来根据指定的条件是否成立来选择原始数据框中的一个行子集。该条件可以使用任何逻辑或比较运算符来过滤必要的值。
语法: filter(data , cond)
参数
data- 要操作的数据框
cond- 要检查的条件,以过滤值。
在下面的代码片段中,我们正在检查所有对应于数学科目分数的行。所有的行都会被返回,其中学生有与数学科目相对应的分数。从原始数据库中返回两条这样的行。
#installing the required libraries
library(dplyr)
#creating a data frame
data_frame = data.frame(subject = c("Maths","Hindi","English","English","Hindi",
"Maths","Hindi"),
marks = c(34,23,41,11,35,67,87))
print("Original Data frame")
print(data_frame)
print("Data frame with maths subject")
filter(data_frame, subject == "Maths")
输出:
变异方法
dplyr包中的Mutate方法是用来添加修改或删除原始数据框架的列。通过指定新的列名和用于计算该列中数值的公式,可以添加一个新的列。
语法: Mutate(new-col-name=formula)
参数
new-col-name–要添加的新列的名称
formula-用于计算新添加的列的值的公式。
在下面的代码片段中,一个名为new_marks的新列被添加到数据框中,其中10分被添加到各个学生的现有分数中作为宽限分数。
#installing the required libraries
library(dplyr)
#creating a data frame
data_frame = data.frame(subject = c("Maths","Hindi","English","English","Hindi",
"Maths","Hindi"),
marks = c(34,23,41,11,35,67,87))
print("Original Data frame")
print(data_frame)
print("Data frame with 10 grace marks added to all marks")
#adding 10 grace marks to all marks
data_frame %>%
mutate(new_marks = marks+10)
输出:
选择方法
dplyr包中的Select方法是用来从数据框中选择指定的列。这些列是按照它们出现的顺序检索的,在这个方法的定义中,所有的行都保留这些列。
语法: select(list-of-columns-to-be-retrieved)
在下面的代码片段中,name和mark这两列是按照name列出现在mark列之前的顺序从数据库中提取的。
#installing the required libraries
library(dplyr)
#creating a data frame
data_frame = data.frame(subject = c("Maths","Hindi","English","English","Hindi",
"Maths","Hindi"),
marks = c(34,23,41,11,35,67,87),
name = c("A","V","B","D","S","Y","M"))
print("Original Data frame")
print(data_frame)
print("Data frame with 10 grace marks added to all marks")
#selecting name and marks from the data frame
data_frame %>%
select(name,marks)
输出:
使用Group_by和Summarise
group_by方法是用来将数据框架中的数据根据指定的列名可以创建的组划分成段。group_by方法可以包含一个或多个列。
语法 :group_by(list-of-columns to used for-grouping)
在下面的代码片断中,主题列被用来对数据进行分组。
现在,这个数据框架被用于汇总操作,其中新的列可以通过使用可用的内置函数来创建,以计算属于每个组的条目数 summarise(new-col-name=n()) 。
n()方法 被用来返回每组中的数值计数器。
在下面的代码片段中,例如,学习英语的学生人数是2,所以2被显示为英语科目。
#installing the required libraries
library(dplyr)
#creating a data frame
data_frame = data.frame(subject = c("Maths","Hindi","English","English","Hindi",
"Maths","Hindi"),
marks = c(34,23,41,11,35,67,87),
name = c("A","V","B","D","S","Y","M"))
print("Original Data frame")
print(data_frame)
print("Calculating students in each subject")
#grouping the data frame by subject
data_frame %>%
group_by(subject) %>%
summarise(sum_marks = n())
输出:
使用聚合函数
可以使用像sum()或mean()这样的聚合方法来代替内置的方法来提供数据的统计信息。例如,在summaryise方法中,我们使用了summaryise函数,其参数为分数,然后将属于该科目每个类别的分数之和显示为输出。
#installing the required libraries
library(dplyr)
#creating a data frame
data_frame = data.frame(subject = c("Maths","Hindi","English","English","Hindi",
"Maths","Hindi"),
marks = c(34,23,41,11,35,67,87),
name = c("A","V","B","D","S","Y","M"))
print("Original Data frame")
print(data_frame)
print("Calculating sum of marks of students in each subject")
#grouping the data frame by subject
data_frame %>%
group_by(subject) %>%
summarise(sum_marks = sum(marks))
输出: