You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中计算每小时会员与散客出发量占比的技术求助

解决方案

你可以使用tidyverse生态的工具快速实现需求,完整可运行代码如下:

# 未安装依赖包先运行:install.packages(c("tidyverse", "lubridate"))
library(tidyverse)
library(lubridate)

# 你提供的数据集赋值
DF <- structure(list(start_time = structure(c(55320, 86160, 71340, 
68760, 38340, 59580, 43080, 60480, 39600, 65100, 56640, 65100, 
32880, 83160, 64740, 75420, 62340, 61620, 20160, 37260, 64980, 
62820, 69420, 54540, 43200, 57300, 58560, 44460, 65820, 48240, 
29160, 41100, 83640, 69840, 44100, 29460, 62700, 71100, 27780, 
48240, 35280, 840, 39480, 27000, 64140, 48300, 28080, 61800, 
59880, 45420, 49860, 39180, 38580, 31320, 72660, 20100, 30480, 
64140, 62280, 56280, 29700, 56820, 30180, 64260, 33780, 37920, 
69780, 27240, 40440, 72180, 34800, 72780, 28080, 52500, 82200, 
28500, 60120, 60780, 54780, 58560, 62220, 59700, 68220, 50580, 
63060, 59220, 56580, 39720, 52800, 52080, 63960, 63540, 70500, 
69420, 82560, 58500, 53880, 48120, 29700, 62760), class = c("hms", 
"difftime"), units = "secs"), member_casual = c("member", "member", 
"casual", "casual", "member", "casual", "member", "member", "member", 
"member", "member", "member", "member", "casual", "member", "member", 
"casual", "member", "member", "casual", "casual", "member", "member", 
"casual", "casual", "member", "casual", "member", "member", "casual", 
"casual", "casual", "casual", "member", "casual", "member", "casual", 
"casual", "casual", "casual", "casual", "casual", "casual", "casual", 
"casual", "member", "casual", "member", "member", "casual", "casual", 
"casual", "member", "member", "member", "casual", "member", "casual", 
"member", "casual", "member", "casual", "member", "casual", "member", 
"member", "casual", "member", "member", "member", "member", "member", 
"member", "member", "member", "casual", "member", "member", "member", 
"member", "member", "member", "member", "member", "member", "member", 
"member", "member", "member", "member", "member", "member", "member", 
"casual", "casual", "casual", "casual", "casual", "member", "member"
)), row.names = c(NA, -100L), class = c("tbl_df", "tbl", "data.frame"
))

# 核心计算代码
result <- DF %>%
  # 从时间列提取出发小时(0-23)
  mutate(start_hour = hour(start_time)) %>%
  # 按用户类型、小时分组统计该时段出行次数
  count(member_casual, start_hour, name = "hourly_count") %>%
  # 按用户类型单独分组,计算各时段占对应群体总出行的百分比
  group_by(member_casual) %>%
  mutate(
    total_count = sum(hourly_count),
    percentage = round(hourly_count / total_count * 100, 2)
  ) %>%
  ungroup() %>%
  # 按用户类型、小时排序,方便查看
  arrange(member_casual, start_hour)

# 查看结果
print(result, n = Inf)

输出的result包含字段说明:

  • member_casual:用户类型,分为会员member和散客casual
  • start_hour:出发小时,取值范围0-23
  • hourly_count:对应类型用户在该小时的出发次数
  • total_count:对应类型用户的总出发次数
  • percentage:该小时出发量占对应类型总出发量的百分比,保留两位小数

如果需要宽格式输出,直接对比两类用户的小时占比,可追加以下代码:

wide_result <- result %>%
  select(member_casual, start_hour, percentage) %>%
  pivot_wider(names_from = member_casual, values_from = percentage, values_fill = 0)

内容的提问来源于stack exchange,提问作者Joshua Rowsom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:15:04