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

如何不使用as.Date将全为午夜时间的tibble转换为tsibble

问题原因

这不是tsibble的bug,是as_tsibble()默认自动推断时间序列间隔的逻辑限制。当索引列是POSIXct类型、所有时间值均为0点且存在缺失的天级间隔时,自动推断逻辑无法正确识别到你需要的24小时/1天的固定间隔,因此抛出错误。

解决方案

你可以通过interval参数手动指定时间间隔,不需要修改时间列类型,也不用设置regular=FALSE,完全满足后续fill_gaps()的使用要求,代码示例如下:

require(tsibble)
require(lubridate)
require(tidyverse)

time_2 <- c(ymd_hms('20210101 000000'),
            ymd_hms('20210102 000000'),
            ymd_hms('20210103 000000'),
            ymd_hms('20210105 000000'),
            ymd_hms('20210106 000000'))

df_2 <- tibble(time_2, y=rnorm(5))

# 手动指定间隔为1天
df_2_ts <- df_2 %>% 
  as_tsibble(index=time_2, interval = days(1))

# 测试fill_gaps可正常补全2021-01-04 00:00:00的缺失行
df_2_ts %>% fill_gaps()

你也可以根据实际需求将days(1)替换为hours(24),效果完全一致。转换后的tsibble保留原始POSIXct类型的时间列,同时为规则时间序列,所有tsibble内置的时间处理函数都可以正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:06