📜  如何在 R 中按组计算汇总统计?

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

如何在 R 中按组计算汇总统计?

在本文中,我们将讨论如何在 R 编程语言中按组计算汇总统计量。

摘要统计将从给定数据中返回以下内容:

  • Min –给定数据中的最小值
  • 第一个四分位数 -数据中的第一个四分位数
  • 中位数 –数据的中位数
  • 平均值 -数据的平均值
  • 第三四分位数 -数据中的第三四分位数
  • Max –给定数据中的最大值

让我们创建数据框

R
# create dataframe with 4 columns
data=data.frame(name=c("ojaswi","bobby","rohith","gnanesh","sireesha"),
                subjects=c("java","java","python","cpp","python"),
                age=c(21,23,21,20,19),
                id=c(1,2,3,4,5))
  
# display
data


R
# create dataframe with 4 columns
data=data.frame(name=c("ojaswi","bobby","rohith","gnanesh","sireesha"),
                subjects=c("java","java","python","cpp","python"),
                age=c(21,23,21,20,19),
                id=c(1,2,3,4,5))
  
# display summary by grouping subjects with age
tapply(data$age, data$subjects, summary)


R
# load the library
library("purrr")
  
# create dataframe with 4 columns
data=data.frame(name=c("ojaswi","bobby","rohith","gnanesh","sireesha"),
                subjects=c("java","java","python","cpp","python"),
                age=c(21,23,21,20,19),
                id=c(1,2,3,4,5))
  
# display summary by grouping subjects
data %>% split(.$subjects) %>%map(summary)


R
# load the library
library("dplyr")
  
# create dataframe with 4 columns
data=data.frame(name=c("ojaswi","bobby","rohith","gnanesh","sireesha"),
                subjects=c("java","java","python","cpp","python"),
                age=c(21,23,21,20,19),
                id=c(1,2,3,4,5))
  
# display summary by grouping subjects with age column
data %>% group_by(subjects) %>% summarize(min = min(age),
            q1 = quantile(age, 0.25),
            median = median(age),
            mean = mean(age),
            q3 = quantile(age, 0.75),
            max = max(age))


输出:

方法一:使用 tapply()函数

在这种按组计算汇总统计的方法中,用户只需调用内置的 tapply()函数,并将该函数的汇总参数传递给要计算汇总统计的给定数据,在此方法下,用户将汇总函数作为 R 语言中的第三个参数。

语法

tapply(data$column_name, data$group_column, summary) 

参数:

  • 数据是输入数据框
  • column_name 是要汇总的列
  • group_column 是要分组的列
  • summary 是获取汇总数据

例子:

在此示例中,我们将使用带有摘要参数的 R 语言中的 tapply()函数通过按年龄分组主题来显示摘要。

R

# create dataframe with 4 columns
data=data.frame(name=c("ojaswi","bobby","rohith","gnanesh","sireesha"),
                subjects=c("java","java","python","cpp","python"),
                age=c(21,23,21,20,19),
                id=c(1,2,3,4,5))
  
# display summary by grouping subjects with age
tapply(data$age, data$subjects, summary) 

输出:

方法二:使用 purrr 包:

在这种方法中,用户必须首先安装并导入 purr 包,然后用户必须按照下面的语法来计算一组给定的 R 语言中的数据的汇总统计。

在 R 控制台中安装和导入 purr 包的语法:

install.package('purr')
library('purr')

语法

data %>% split(.$group_column) %>%map(summary) 

在哪里,

  • 数据是输入数据框
  • group_column 是要分组的列
  • summary 是获取摘要的函数

例子:

在此示例中,我们借助 R 语言中的 purr 包对主题进行分组来显示摘要。

R

# load the library
library("purrr")
  
# create dataframe with 4 columns
data=data.frame(name=c("ojaswi","bobby","rohith","gnanesh","sireesha"),
                subjects=c("java","java","python","cpp","python"),
                age=c(21,23,21,20,19),
                id=c(1,2,3,4,5))
  
# display summary by grouping subjects
data %>% split(.$subjects) %>%map(summary)

输出:

方法三:使用 dplyr 包

在这种方法中,用户必须在工作的 R 控制台中安装和导入 dplyr 包,然后使用 group_by 和 sumarize()函数按照以下语法以 R 语言按组获取摘要。

在 R 控制台中安装和导入 dplyr 包的语法:

install.package('dplyr')
library('dplyr')

语法

data %>% group_by(group_column) %>% summarize(min = min(column),
            q1 = quantile(column, 0.25),
            median = median(column),
            mean = mean(column),
            q3 = quantile(column, 0.75),
            max = max(column))

参数:

  • min(column) – 获取列的最小值
  • max(column) – 获取列的最大值
  • median(column) – 获取列的中位数
  • mean(column) – 获取列的平均值
  • quantile(column, 0.25) – 获取列的第一个四分位数
  • quantile(column, 0.75) – 获取列的第三个四分位数

例子:

在此示例中,我们通过使用 R 编程语言中的 dplyr 包将具有年龄列的主题分组来显示摘要。

R

# load the library
library("dplyr")
  
# create dataframe with 4 columns
data=data.frame(name=c("ojaswi","bobby","rohith","gnanesh","sireesha"),
                subjects=c("java","java","python","cpp","python"),
                age=c(21,23,21,20,19),
                id=c(1,2,3,4,5))
  
# display summary by grouping subjects with age column
data %>% group_by(subjects) %>% summarize(min = min(age),
            q1 = quantile(age, 0.25),
            median = median(age),
            mean = mean(age),
            q3 = quantile(age, 0.75),
            max = max(age))

输出: