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

R处理Divvy骑行数据调用filter筛选时报错starttime未找到求助

问题原因

报错的核心原因是列选择逻辑错误:你在select(trip, usertype)步骤仅保留了usertype一列,后续filter()需要用到的starttime、stoptime,以及分组用到的starttime都已经被移除,因此触发找不到对象的报错。

修正后代码
library(tidyverse)
library(lubridate) # 需提前加载该包才能正常调用hour、wday函数

divvy_trips <- c("divvy_trips_2013","divvy_trips_2014_Q1Q2","divvy_trips_2014_Q3_07","divvy_trips_2014_Q3_0809","divvy_trips_2014_Q4","divvy_trips_2015_Q1","divvy_trips_2015_Q2","divvy_trips_2015_07","divvy_trips_2015_08","divvy_trips_2015_09","divvy_trips_2015_Q4","divvy_trips_2016_Q1","divvy_trips_2016_04","divvy_trips_2016_05","divvy_trips_2016_06","divvy_trips_2016_Q3","divvy_trips_2016_Q4","divvy_trips_2017_Q1","divvy_trips_2017_Q2","divvy_trips_2017_Q3","divvy_trips_2017_Q4","divvy_trips_2018_Q1","divvy_trips_2018_Q2","divvy_trips_2018_Q3","divvy_trips_2018_Q4","divvy_trips_2019_Q1","divvy_trips_2019_Q2","divvy_trips_2019_Q3","divvy_trips_2019_Q4")

divvy_trip_days=NULL  
for(i in divvy_trips){
  trip<-eval(parse(text=i))
  # 新增stoptime字段存在校验,避免部分数据集缺字段时报错
  if ("starttime" %in% names(trip) & "stoptime" %in% names(trip)){
    trip<-trip %>%
      # 先做筛选、分组、聚合,处理完成后再按需保留字段
      filter(((hour(starttime) >=6 & hour(stoptime) >=6) & (hour(starttime)<=10 & hour(stoptime) <=10)) |((hour(starttime) >=16& hour(stoptime) >=16)& (hour(starttime)<=20 & hour(stoptime) <=20)))%>% 
      group_by(usertype,what_day = wday(starttime))%>% 
      summarise(count=n(), .groups = "drop") # 新增参数关闭分组警告
  }
  divvy_trip_days <- rbind(divvy_trip_days,trip)
  print(i)
}
可优化建议
  • 可以把所有数据集提前存入同一个列表处理,替代eval(parse())的写法,逻辑更安全也更易调试
  • 可以用purrr::map_dfr()代替for循环+rbind的写法,自动完成多数据集结果拼接,代码更简洁
  • 可以先统一校验所有数据集的字段格式、时间字段类型,避免中途出现类型转换报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:03