如何使用Tidyverse处理马拉松数据并绘制按class分组的时间中位数柱状图
假设你筛选出Category为M40的观测值后的数据集命名为marathon_m40,后续步骤代码如下:
分组统计并按maxWeeks降序排序
使用dplyr的分组、汇总、排序函数实现需求:
library(tidyverse) stat_result <- marathon_m40 %>% # 按class字段分组 group_by(class) %>% # 统计对应指标,假设数据集中马拉松完赛时间的列名为`time`,若你的数据集列名不同请自行替换 summarise( medianTime = median(time, na.rm = TRUE), maxWeeks = max(km4week, na.rm = TRUE) ) %>% # 按maxWeeks降序排列 arrange(desc(maxWeeks))
na.rm = TRUE参数用于忽略列中的缺失值,避免统计结果返回NA,若你确认对应列无缺失值可删除该参数
绘制分类完赛时间中位数柱状图
使用ggplot2绘制柱状图:
ggplot(stat_result, aes(x = class, y = medianTime)) + geom_col(fill = "#2E86AB") + labs( x = "分类", y = "马拉松完赛时间中位数", title = "各分类马拉松完赛时间中位数分布" ) + # 可选配置:x轴标签旋转45度避免重叠 theme(axis.text.x = element_text(angle = 45, hjust = 1))
内容的提问来源于stack exchange,提问作者Aditya Nair
相关产品推荐
相关产品推荐

