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

RStudio中使用mutate/as.Date报‘Object not found’错误求助

问题解决建议

核心问题:语法错误导致列无法识别

你代码里每行开头的多余+是错误根源——R在管道链换行时会自动显示+作为续行提示,但手动输入这个符号会破坏管道的上下文传递,导致dplyr无法从tripdata_combined中读取列,反而把started_at当成全局变量(全局环境里确实没有这个变量,所以exists("started_at")返回FALSE)。

修正后的代码

先去掉多余的+,同时注意日期解析格式(你的started_at是月/日/年 时分格式,必须指定format参数,否则as.Date会解析失败),另外可以把多个mutate合并成一个,提升效率:

# 先加载dplyr(如果未加载)
library(dplyr)
# 修正语法并正确解析日期
tripdata_combined <- tripdata_combined %>%
  mutate(
    # 先把started_at转成Date类型
    started_at_dt = as.Date(started_at, format = "%m/%d/%Y %H:%M"),
    year = format(started_at_dt, "%Y"),
    month = format(started_at_dt, "%B"),
    date = format(started_at_dt, "%d"),
    day_of_week = format(started_at_dt, "%A"),
    # 计算骑行时长时,需先把ended_at也转成Date类型
    ride_length = difftime(as.Date(ended_at, format = "%m/%d/%Y %H:%M"), started_at_dt, units = "mins")
  )

更简便的日期处理(推荐)

用lubridate包可以自动识别日期格式,无需手动编写规则:

library(dplyr)
library(lubridate)

tripdata_combined <- tripdata_combined %>%
  mutate(
    started_at_dt = mdy_hm(started_at), # 自动识别月/日/年 时分格式
    ended_at_dt = mdy_hm(ended_at),
    year = year(started_at_dt),
    month = month(started_at_dt, label = TRUE, abbr = FALSE), # 直接获取月份全称
    date = day(started_at_dt),
    day_of_week = wday(started_at_dt, label = TRUE, abbr = FALSE), # 直接获取星期全称
    ride_length = difftime(ended_at_dt, started_at_dt, units = "mins")
  )

验证列存在的正确方式

不要用exists()(它检查的是全局环境变量),要检查数据框内的列,用:

# 检查tripdata_combined中是否包含started_at列
"started_at" %in% colnames(tripdata_combined)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:25:30