使用dplyr统计一周各日不同用户类型的平均骑行人数
按周维度与用户类型统计日均骑行人数需求说明
我的数据样例如下:
# A tibble: 4,722,462 x 5 started_at member_casual weekday ride_length month <dttm> <chr> <fct> <dbl> <fct> 1 2020-08-20 18:08:14 member Thursday 0.160 August 2 2020-08-27 18:46:04 casual Thursday 1.15 August 3 2020-08-26 19:44:14 casual Wednesday 2.15 August 4 2020-08-27 12:05:41 casual Thursday 0.801 August 5 2020-08-27 16:49:02 casual Thursday 0.180 August 6 2020-08-27 17:26:23 casual Thursday 0.691 August 7 2020-08-26 20:14:02 casual Wednesday 0.333 August 8 2020-08-26 21:59:50 casual Wednesday 0.212 August 9 2020-08-26 19:17:42 casual Wednesday 0.242 August 10 2020-08-27 15:13:57 casual Thursday 0.467 August # ... with 4,722,452 more rows
我需要按weekday和member_casual字段分组汇总,得到一周内每一天对应不同用户类型的平均骑行人数,例如「周一」和casual(散客)对应行的计算规则为:数据中周一与散客同时出现的总次数 ÷ 给定时间范围内实际的周一总天数。目前我已写出如下接近需求的实现代码:
# 计算给定时间范围内的总周数 weeks_ <- as.numeric(difftime(max(df2$started_at),min(df2$started_at),units="weeks")) # 假设时间范围均为完整周 df2 %>% group_by(weekday,member_casual)%>% summarise("Average Riders"=(n()/weeks_))
由于时间范围足够大,该输出虽不十分精确但可满足准确度要求,输出结果示例如下:
weekday member_casual `Average Riders` <fct> <chr> <dbl> 1 Monday casual 4404. 2 Monday member 6688. 3 Tuesday casual 4279. 4 Tuesday member 7289. 5 Wednesday casual 4434. 6 Wednesday member 7648. 7 Thursday casual 4447. 8 Thursday member 7285. 9 Friday casual 5807. 10 Friday member 7452. 11 Saturday casual 9366. 12 Saturday member 7612. 13 Sunday casual 7527. 14 Sunday member 6331.
内容的提问来源于stack exchange,提问作者Spinach55
相关产品推荐
相关产品推荐

