如何在R语言中按24小时时段+users_ride分组统计rides_id数量
按小时+用户类型统计骑行量并可视化的实现方案
第一步:准备工具包
先安装并加载需要的R包,tidyverse集合了数据处理和绘图的常用工具,lubridate专门处理时间数据:
# 未安装的话先执行安装 install.packages(c("tidyverse", "lubridate")) # 加载包 library(tidyverse) library(lubridate)
第二步:处理时间数据并提取小时
把原始的start_time转换成标准时间格式,再提取小时字段,为后续分组做准备:
# 转换时间格式并提取小时 trip_data_processed <- trip_data %>% mutate(start_time = ymd_hms(start_time), # 将字符串转为可识别的时间格式 hour = hour(start_time)) # 提取小时(范围0-23)
第三步:分组统计骑行数量
按小时和用户类型分组,统计每组的骑行ID数量:
trip_stats <- trip_data_processed %>% group_by(hour, users_ride) %>% summarise(ride_count = n(), .groups = "drop") # n()统计每组行数,即骑行数量
第四步:绘制可视化图表
用分组柱状图展示每个小时不同用户类型的骑行量,直观清晰:
ggplot(trip_stats, aes(x = hour, y = ride_count, fill = users_ride)) + geom_col(position = "dodge", width = 0.7) + # 分组并排柱状图 scale_x_continuous(breaks = 0:23) + # x轴显示0到23所有小时刻度 labs(title = "各时段不同用户类型的骑行数量", x = "一天中的小时", y = "骑行数量", fill = "用户类型") + theme_minimal() # 简洁主题风格
补充调整建议
- 如果数据量较大,折线图会更适合,把
geom_col替换为geom_line()再加geom_point()即可 - 可通过
scale_fill_manual()自定义柱子颜色,比如scale_fill_manual(values = c("member" = "#2E86AB", "casual" = "#F25F5C"))
内容的提问来源于stack exchange,提问作者Fi Nguyen
相关产品推荐
相关产品推荐

