R语言 如何找到R数据框架的分组汇总统计
找到数据框架的分组汇总统计数据对于理解我们的数据框架非常有用。汇总包括统计数据:给定数据框架的平均值、中位数、最小值、最大值和四分位数。总结可以在单个列或变量上计算,也可以在整个数据框上计算。在这篇文章中,我们将看到如何在R编程语言中找到数据框架的分组汇总统计数据。
在 R语言 中导入数据
在下面的代码中,我们使用了一个内置的数据集: 虹膜花数据集。 然后我们可以通过使用 head() 或 tail() 函数来检查我们的数据集,这将打印出数据框架的顶部和底部。在下面的代码中,我们已经显示了我们的样本数据框架的前10行。
# import data
df <- iris
# inspecting the dataset
head(df, 10)
输出 。
单个变量或列的摘要
我们的数据框架被存储在 ” df ” 变量中。我们想打印列的摘要: Sepal.Length。 因此,我们在summary()函数中传递 “df$Sepal.length “作为参数。
语法: summary(dataframe$column_name)
summary() 函数接收一个数据框架列并返回。
- **中心趋势- > **平均值和中位数。
- **四分位数范围- > **第25和第75四分位数。
- **范围- > **该单列的最小和最大值。
例1 :
df <- iris
summary(df$Sepal.Length)
输出 。
例2: 我们也可以把 “digits “作为一个参数,指定我们要修正的输出值的小数点位数。
语法: summary(dataframe$column_name , digits=number_of_decimal_places)
df <- iris
summary(df$Sepal.Width, digits = 3)
输出 。
整个数据框架的摘要
在下面的代码中,我们在 summary() 函数中传递了整个数据框架作为参数,因此它计算出了整个数据框架(所有列或变量)的 **** 摘要。
语法: summary(dataframe_name)
df <- iris
summary(df)
输出 。
数据的分组汇总
为了更好地理解R中的数据框架,建议参考R-数据框架这篇文章。
让我们先创建一个样本数据框架 。
df <- data.frame(
Weekday = factor(rep(c("Mon", "Tues", "Wed",
"Thurs", "Fri"), each = 4),
levels = c("Mon", "Tues", "Wed",
"Thurs", "Fri")),
Quarter = paste0("Q", rep(1:4, each = 5)),
Delay = c(9.9, 5.4, 8.8, 6.9, 4.9, 9.7, 7.9, 5, 8.8,
11.1, 10.2, 9.3, 12.2, 10.2, 9.2, 9.7, 12.2,
8.1, 7.9, 5.6))
df
输出 。
总结 单一变量 的分组数据
我们的数据框架由3个变量组成: 周天 、 季度 和 延迟。 我们将总结的变量是 延迟 ,在这个过程中 , 季度 变量将被折叠。
在下面的代码中,我们将使用dplyr包。R中的dplyr包是一个数据操作的结构,它提供了一套统一的动词,帮助解决最常见的数据操作障碍。我们将使用 group_by() 函数进行 **** 分组操作,使用 summaryize() 函数进行总结操作。然后我们将计算2个统计汇总: 最大延迟时间 和 最小延迟时间 。
语法: group_by(variable_name)
library(dplyr)
df <- data.frame(
Weekday = factor(rep(c("Mon", "Tues", "Wed", "Thurs",
"Fri"), each = 4),
levels = c("Mon", "Tues", "Wed", "Thurs",
"Fri")),
Quarter = paste0("Q", rep(1:4, each = 5)),
Delay = c(9.9, 5.4, 8.8, 6.9, 4.9, 9.7, 7.9, 5, 8.8,
11.1, 10.2, 9.3, 12.2, 10.2, 9.2, 9.7, 12.2,
8.1, 7.9, 5.6))
df %>%
group_by(Weekday) %>%
summarize(min_delay = min(Delay), max_delay = max(Delay))
输出 。
总结多变量的分组数据
让我们创建另一个样本数据框->df2。
# sample dataframe
df2 <- data.frame(
Quarter = paste0("Q", rep(1:4, each = 4)),
Week = rep(c("Weekday", "Weekend"), each=2, times=4),
Direction = rep(c("Inbound", "Outbound"), times=8),
Delay = c(10.8, 9.7, 15.5, 10.4, 11.8, 8.9, 5.5,
3.3, 10.6, 8.8, 6.6, 5.2, 9.1, 7.3, 5.3, 4.4))
df2
输出 。
对数据进行分组总结 。
在这种情况下,我们的数据框架有4个变量: 季度、周、 方向、延时。 在下面的代码中,我们按 季度 和 周 进行分组和汇总,在这个过程中,变量 Direction 被折叠了。
语法: group_by(variable_name1,variable_name2 )
library(dplyr)
# sample dataframe
df2 <- data.frame(
Quarter = paste0("Q", rep(1:4, each = 4)),
Week = rep(c("Weekday", "Weekend"), each=2, times=4),
Direction = rep(c("Inbound", "Outbound"), times=8),
Delay = c(10.8, 9.7, 15.5, 10.4, 11.8, 8.9, 5.5,
3.3, 10.6, 8.8, 6.6, 5.2, 9.1, 7.3, 5.3, 4.4))
# summarizing by group
df2 %>%
group_by(Quarter, Week) %>%
summarize(min_delay = min(Delay), max_delay = max(Delay))
输出: