如何在 R DataFrame 中按组计算平均值?
在本文中,我们将看到如何在 R 编程语言中计算 DataFrame 中分组的平均值。
它可以通过两种方法完成:
- 使用聚合函数
- 使用 dplyr 包
数据集创建:首先,我们创建一个数据集,以便稍后我们可以应用上述两种方法并按组查找均值。
R
# GFG dataset name and creation
GFG <- data.frame(
Category = c ("A","B","C","B","C","A","C","A","B"),
Frequency= c(9,5,0,2,7,8,1,3,7)
)
# Prints the dataset
print(GFG)
R
GFG <- data.frame(
Category = c ("A","B","C","B","C","A","C","A","B"),
Frequency= c(9,5,0,2,7,8,1,3,7)
)
# Specify data column
aggregate(x= GFG$Frequency,
# Specify group indicator
by = list(GFG$Category),
# Specify function (i.e. mean)
FUN = mean)
R
# load dplyr library
library("dplyr")
GFG <- data.frame(
Category = c ("A","B","C","B","C","A","C","A","B"),
Frequency= c(9,5,0,2,7,8,1,3,7)
)
# Specify data frame
GFG%>%
# Specify group indicator, column, function
group_by(Category) %>%
summarise_at(vars(Frequency),
list(name = mean))
因此,如您所见,上面的代码用于创建名为“GFG”的数据集。
它还有 2 列名为Category和Frequency。因此,当您在 R 编译器中运行上述代码时,将显示一个表作为输出,如下所示
在应用这两种方法之后,我们需要得到如下输出:
在我们讨论这些方法之前,让我们先知道我们是如何获得输出值的:
- 在表 1 中,我们有两列名为 Category 和 Frequency。
- 在类别中,我们有一些重复的A、B 和 C变量。
- A 组值 (9,8,3) , B 组值 (5,2,7)和C 组值 (0,7,1)取自频率列。
- 所以,为了找到Mean我们有一个公式
MEAN = Sum of terms / Number of terms
- 因此,每组 (A,B,C) 的组平均值将是
和:
- A=9+8+3=20
- B=5+2+7=14
- C=0+7+1=08
条款数:
- A重复3次
- B重复3次
- C重复3次
按组(A、B、C)的平均值:
- A(mean) = 总和/项数 = 20/3 = 6.67
- B(mean) = 总和/项数 = 14/3 = 4.67
- C(mean) = 总和/项数 = 8/3 = 2.67
方法一:使用聚合函数
聚合函数:将数据拆分为子集,计算每个子集的汇总统计信息,并以方便的形式返回结果。
Syntax: aggregate(x = dataset_Name , by = group_list, FUN = any_function)
# Basic R syntax of aggregate function
现在,让我们使用聚合函数对数据求和:
电阻
GFG <- data.frame(
Category = c ("A","B","C","B","C","A","C","A","B"),
Frequency= c(9,5,0,2,7,8,1,3,7)
)
# Specify data column
aggregate(x= GFG$Frequency,
# Specify group indicator
by = list(GFG$Category),
# Specify function (i.e. mean)
FUN = mean)
输出:
在上面的聚合函数,它接受三个参数
- 首先是数据集名称,在我们的例子中是“GFG”。
- 第二个是列名,我们需要在我们的例子中创建不同的组,它是类别列,它被分成三组(A、 B、C)。
- 在第三个参数中,我们需要提及我们需要对形成的组(A、B、C)执行哪个函数(即均值、总和等)
方法二:使用dplyr包
dplyr 是一个包,它提供了一组工具来有效地操作 R 中的数据集
dplyr 包中的方法:
- mutate()添加作为现有变量的函数的新变量
- select()根据名称选择变量。
- filter()根据它们的值选择案例。
- summarise()将多个值缩减为一个汇总。
- 排列()改变行的顺序。
安装这个库:
install.packages("dplyr")
加载这个库:
library("dplyr")
代码:
电阻
# load dplyr library
library("dplyr")
GFG <- data.frame(
Category = c ("A","B","C","B","C","A","C","A","B"),
Frequency= c(9,5,0,2,7,8,1,3,7)
)
# Specify data frame
GFG%>%
# Specify group indicator, column, function
group_by(Category) %>%
summarise_at(vars(Frequency),
list(name = mean))
输出:
在上面的代码中,我们首先采用名为“GFG”的数据集。使用group_by()方法,我们在我们的案例(A、B、C)中形成组。 summarise_at()它有两个参数,首先是一个列,它应用作为它的第二个参数给出的操作。