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

R语言使用chron将字符型时间转为时间格式并整合到数据集问题

问题解决方案

错误原因

  • 管道%>%会将前序操作的输出结果作为下一个函数的第一个默认参数,你原代码末尾直接写chron(times=f1$ymd_hms(Timestamp)),相当于把前序得到的10078行4列的dataframe传入了chron的第一个参数dates,和你传入的times参数维度完全不匹配,自然报错。
  • 管道操作中直接修改列时不需要加原数据框前缀f1$,mutate会自动识别当前管道内的数据集列,用f1$反而会调用未经过前序修改的原始数据集列,容易出现逻辑错误。
  • 额外的transform调用没有必要,dplyr的mutate本身就可以完成列类型修改的操作,写法更统一。

正确实现代码

library(dplyr)
library(chron)

time <- f1 %>%
  mutate(
    # 转换时间为HH:MM:SS字符格式
    `ymd_hms(Timestamp)` = strftime(`ymd_hms(Timestamp)`, tz="GMT", format = "%H:%M:%S"),
    # 修改SpotPrice为数值格式
    SpotPrice = as.numeric(SpotPrice),
    # 直接将字符时间转换为chron的times格式,保留在数据框列中
    `ymd_hms(Timestamp)` = chron(times = `ymd_hms(Timestamp)`)
  )

执行上述代码后调用str(time)查看数据集结构,即可看到ymd_hms(Timestamp)列已经为times格式,无需单独生成向量再合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:15:01