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

如何用R语言的ts()函数将给定数据转换为小时级时间序列?

如何用R的ts()函数处理你的预订人数时间序列

首先,帮你理清ts()函数里frequency参数的核心逻辑:它代表一个完整周期内包含的观测值数量,简单说就是「单位周期里有几个数据点」。你的纠结点在24和10,其实这两个都不是最适合的选项,下面给你拆解清楚:

先分析你的数据特征

你的数据是按2小时间隔采集的(11:00→13:00→15:00…),单日共有6个观测点。要确定frequency,首先得明确你设定的「周期」是什么——这里显然是一天(24小时)。

为什么24和10都不对?

  • 选24的问题:frequency=24意味着你假设一天内有24个观测点(每小时一个),但你的数据是每2小时一个,这样会让时间序列的间隔变成1小时,和实际数据间隔不匹配,还会产生大量缺失值,完全不符合需求。
  • 选10的问题:10这个数字没有任何依据——你的数据既不是10个点为一个周期,一天也不是10小时,完全不贴合你的数据场景。

正确的frequency设置

因为你的数据是每2小时一个观测,一天24小时内会有12个这样的时间点(0:00、2:00…22:00),所以frequency应该设为12。这个参数告诉R:「我的时间序列以天为周期,每个周期里有12个2小时间隔的观测点」。

实操代码示例

# 整理原始数据
times <- c("11:00", "13:00", "15:00", "17:00", "19:00", "21:00")
booked_res <- c(23, 26, 27, 25, 28, 30)

# 创建时间序列:frequency=12(一天12个2小时间隔点),start指定第1天的第6个观测点(对应11:00)
ts_booked <- ts(booked_res, frequency = 12, start = c(1, 6))

# 查看结果
print(ts_booked)

运行后你会得到结构正确的时间序列,每个数据点的位置对应它在一天中的2小时区间位置。

额外说明

如果后续你的数据扩展到覆盖全天所有2小时间隔的时间点(比如补充0:00、2:00等时段的数据),这个frequency=12的设置依然完全适用,不需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:50:52