如何按时间序列按小时汇总数据?大家好,JMP 社区,
我正在处理一个包含分钟级别时间戳的时间序列数据集(例如 2025-07-12 14:03:00 )。我尝试将数据按小时汇总到一起,以便直观地呈现一天中的趋势。
我尝试过将 Group 函数与 Hour(DateTime) 结合使用,但不确定在汇总表或图表中是否正确应用。另外,想知道有没有更简洁的方法在聚合之前将时间戳四舍五入到最接近的小时数?
任何有关每小时分组的提示或脚本示例都会非常有用。
谢谢!
约翰·玛丽
基础数据分析与建模数据访问回复:如何按时间序列按小时汇总数据?我会创建一个新的列,从日期时间列中删除分钟和秒。您可以使用 JMP 提供的快速公式来创建它,但需要一些公式。首先,您可以创建日期列

然后创建小时列

并结合这些

接下来打开创建的列,更改格式,并将公式修改为将小时数乘以“以小时为单位”(1)(相当于 60*60,即以小时为单位的秒数,这基本上就是 JMP 管理时间的方式)。最终公式如下所示
In Hours(:"Hour[Column 1]"n) + :"Date[Column 1]"n

当然,您也可以在一列中完成所有操作,只需从“小时”列(记得将其转换为小时数)和“日期”列中选择公式,然后合并即可。最终公式如下所示(并非唯一选项):
:Column 1 - Time Of Day(:Column 1) + In Hours(Hour(:Column 1))
其中:第 1 列是您拥有的日期时间列

您也可以从日期时间中扣除秒和分钟(记得将它们转换为秒),您应该会得到类似的结果
:Column 1 - Second(:Column 1) - Minute(:Column 1)*60

了解更多关于 JMP 中日期时间的信息:使用 JMP > 公式中 JMP 函数的参考 > 日期时间函数
回复:如何按时间序列按小时汇总数据?JM:
我大量使用来自过程数据历史学家的传感器时间序列数据。
您的数据是均匀分布的吗?例如,一分钟的平均值或快照,还是时间戳可能来自一小时内的任何时间?您想将数据汇总为每小时平均值,还是仅将时间戳四舍五入到最接近的小时数?
无论哪种情况,最简单的方法是:右键单击时间戳列 > 新建公式列 > 变换 > 舍入 > 最近 1 小时
创建四舍五入的时间戳后,创建每小时平均值:表格 > 摘要 > 组:四舍五入的时间戳;添加包含所需统计数据的数据列 < 表格摘要>
很高兴进一步讨论这个问题。
回复:如何按时间序列按小时汇总数据?@markschahl
非常舒服!!
好的 : )
回复:如何按时间序列按小时汇总数据?啊, 日期增量()在后台完成这项工作。
相同的函数在 GraphBuilder 中进行分箱 - 非常有用!
如果您对一直延伸到公元 0 年的轴感到好奇:
不幸的是,日期增量()函数不会这样处理缺失值;它们会被四舍五入为 0。

嵌套/分箱时间/日期轴的一些改进+错误修复 & TS-00147884。
回复:如何按时间序列按小时汇总数据?解决方法是排除错误的行,
将公式改为
tmp = Date Increment( :"date-time"n, "Hour", 0 );
If( tmp == -60084288000,.,tmp); // "0" = -60084288000
... or use -60084288000 as 缺失值代码 via the column properties:

回复:如何按时间序列按小时汇总数据?我只是想知道:

将日期和时间四舍五入到分钟,就不会出现遗漏的问题。
解释:

...无日期增量()
因此,另一种方法是四舍五入到小时数:

:)