Google数据分析案例中R代码报错:字符串格式不明确
问题原因
报错核心是started_at列属于字符类型,而wday()函数要求输入日期/日期时间类型数据。你的started_at格式为"1/1/19 12:04 AM",这类字符串存在解析歧义(比如1/1/19可能被误判为日/月/年,年份也可能被识别为1900年而非2019年),导致R无法自动解析为标准日期时间格式。
解决方案
先将started_at转换为日期时间类型,再执行分组统计逻辑,步骤如下:
- 安装并加载必要工具包
# 首次运行需安装包 install.packages(c("lubridate", "dplyr")) # 加载包 library(lubridate) library(dplyr)
- 转换
started_at为日期时间类型
你的日期格式是月/日/年 小时:分钟 上下午,用lubridate的mdy_hm()函数可以精准解析:
all_trips2 <- all_trips2 %>% mutate(started_at = mdy_hm(started_at))
也可以用基础R函数指定格式完成转换:
all_trips2$started_at <- as.POSIXct(all_trips2$started_at, format = "%m/%d/%y %I:%M %p")
- 重新运行分组统计代码
all_trips2 %>% mutate(weekday = wday(started_at, label = TRUE)) %>% group_by(member_casual, weekday) %>% summarise(number_of_rides = n(), average_duration = mean(ride_length), .groups = "drop") # 添加该参数避免分组残留警告
额外修正提示
从你提供的dput输出看,date列虽为Date类型,但年份显示为0001(实际应为2019年),说明此前的日期转换存在错误,可同步修正:
all_trips2 <- all_trips2 %>% mutate(date = mdy(date))
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

