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

使用R语言lubridate包round_date函数处理时间取整报错问题

解决R语言时间取整报错问题

错误原因

你写的round_date函数里,unit参数用了second(as_datetime(...))计算出的数值,这完全不符合函数要求——round_date的unit参数需要传入时间单位字符串(比如"second"、"minute"),不是数值,这才导致了"Invalid period name: 4"的报错。

正确写法

如果你的需求是把时间按分钟取整(比如09:14:59转成09:15:00),直接给unit传"minute"即可。如果需要按其他间隔取整(比如5分钟),可以写成"5 minutes"。

基础示例(已转成datetime类型的字段)

library(lubridate)
library(dplyr)

temperature = worksheet_temperature %>%
  mutate(measurement_date = round_date(measurement_date, unit = "minute"))

处理Excel格式时间数值

如果你的measurement_date是Excel导出的数值型时间(所以你之前用了origin = "1899-12-30"),需要先把它转成标准datetime类型,再做取整:

temperature = worksheet_temperature %>%
  mutate(
    # 先转成标准datetime
    measurement_date = as_datetime(measurement_date, origin = "1899-12-30"),
    # 按分钟取整
    measurement_date_rounded = round_date(measurement_date, unit = "minute")
  )

补充说明

  • round_date会自动按四舍五入规则取整:比如秒数≥30的时间会进位到下一分钟,<30则舍去。
  • 如果需要强制向上取整(不管秒数多少都进位),可以用ceiling_date函数,用法和round_date一致;强制向下取整用floor_date。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:52:38