如何在 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))
输出: