基于数值型hr字段创建高峰时段标识并统计注册骑行用户数求助
问题修正与解决方案
你的代码存在两个关键问题:
- 过滤条件错误:用
|(逻辑或)会筛选出所有行(0-23的小时数要么>15要么<19),应该用&(逻辑与)锁定16-18点的高峰时段。 tally用法错误:管道%>%已经传递了过滤后的数据集,直接引用bike_df$registered会调用原始全量数据而非过滤后的子集,且tally需要用wt参数指定求和字段。
需求1:创建高峰时段分类字段
用mutate结合ifelse或case_when生成分类字段:
# 方法1:简洁实现 bike_df <- bike_df %>% mutate(peak_hour = ifelse(hr %in% 16:18, "Yes", "No")) # 方法2:多场景兼容(适合后续扩展条件) bike_df <- bike_df %>% mutate(peak_hour = case_when( hr >= 16 & hr <= 18 ~ "Yes", TRUE ~ "No" ))
需求2:统计高峰时段注册用户总数
以下两种方法都能得到正确结果:
方法1:直观易懂的常规写法
peak_registered_total <- bike_df %>% filter(hr >= 16 & hr <= 18) %>% summarize(total_registered = sum(registered))
方法2:贴合你最初思路的tally写法
peak_registered_total <- bike_df %>% filter(hr >= 16 & hr <= 18) %>% tally(wt = registered) # wt参数指定按registered字段求和
内容的提问来源于stack exchange,提问作者yy2j2022
相关产品推荐
相关产品推荐

