📜  如何在 R DataFrame 中按组计算平均值?

📅  最后修改于: 2022-05-13 01:55:41.489000             🧑  作者: Mango

如何在 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 列名为CategoryFrequency。因此,当您在 R 编译器中运行上述代码时,将显示一个表作为输出,如下所示

在应用这两种方法之后,我们需要得到如下输出:

在我们讨论这些方法之前,让我们先知道我们是如何获得输出值的:

  • 在表 1 中,我们有两列名为 Category 和 Frequency。
  • 在类别中,我们有一些重复的A、B 和 C变量
  • A 组值 (9,8,3)B 组值 (5,2,7)C 组值 (0,7,1)取自频率列。
  • 所以,为了找到Mean我们有一个公式
  • 因此,每组 (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

方法一:使用聚合函数

聚合函数:将数据拆分为子集,计算每个子集的汇总统计信息,并以方便的形式返回结果。

现在,让我们使用聚合函数对数据求和:

电阻

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()它有两个参数,首先是一个列,它应用作为它的第二个参数给出的操作。