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

如何使用.groups参数解决summarise未按weekday分组的问题

修复summarise分组异常与可视化问题

核心问题分析

你收到的提示是dplyr的默认行为:summarise()会自动将分组层级向上缩减一级(你按member_casual和weekday双分组,默认summarise后仅保留member_casual分组),但看不到预期分组结果的根本原因是:started_at是字符型,wday()无法正确解析生成合法的星期分组,导致后续分组逻辑失效。

解决方案

1. 修正日期时间类型

使用lubridate包的mdy_hm()函数将started_at转换为日期时间格式(你的日期格式是月/日/年 时:分)。

2. 用.groups参数控制分组保留

在summarise()中设置.groups参数,常用可选值:

  • .groups="keep":保留所有原始分组(member_casual + weekday)
  • .groups="drop":完全取消分组(适合后续ggplot可视化,避免分组影响绘图)

修正后的完整代码

library(dplyr)
library(lubridate)
library(ggplot2)

all_trips_v2 %>% 
  # 转换started_at为日期时间类型
  mutate(started_at = mdy_hm(started_at)) %>%
  # 生成正确的星期标签
  mutate(weekday = wday(started_at, label = TRUE)) %>% 
  # 按双变量分组
  group_by(member_casual, weekday) %>% 
  # summarise时设置.groups参数,这里用drop取消分组方便绘图
  summarise(number_of_rides = n(),
            average_duration = mean(ride_length),
            .groups = "drop") %>% 
  arrange(member_casual, weekday) %>% 
  ggplot(aes(x = weekday, y = number_of_rides, fill = member_casual)) +
  geom_col(position = "dodge")

补充说明

如果后续还要基于分组做操作,可将.groups="drop"改为.groups="keep",ggplot处理分组数据也能正常工作,只是取消分组更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:38:33