時系列で時間ごとにデータを集計するにはどうすればよいですか?JMPコミュニティの皆様、こんにちは。
分単位のタイムスタンプ(例:2025-07-12 14:03:00 )を含む時系列データセットを扱っています。1日を通しての傾向を視覚化するため、データを1時間ごとに集計したいと考えています。
Hour(DateTime) で Group 関数を使ってみたのですが、集計表やグラフで正しく適用できているか分かりません。また、集計前にタイムスタンプを最も近い時間に丸める、よりクリーンな方法はないでしょうか?
時間ごとのグループ化に関するヒントやスクリプトの例があれば、非常に役立ちます。
ありがとう!
ジョン・マリー
基本的なデータ分析とモデリングデータアクセスRe: 時系列で時間ごとにデータを集計するにはどうすればよいですか?日付と時刻の列から分と秒を削除した新しい列を作成します。JMPに付属のクイック計算式を使って作成できますが、必要な計算式は限られています。まず、日付列を作成します。

次に時間列を作成します

これらを組み合わせると

次に、作成した列を開き、表示形式を変更して、式を修正します。「時間」に「In Hours(1)」(60*60は時間単位の秒数で、JMPでは基本的にこのように計算されます)を掛けます。最終的な式は以下のようになります。
In Hours(:"Hour[Column 1]"n) + :"Date[Column 1]"n

もちろん、時間列(時間に変換することを忘れないでください)と日付列の数式を組み合わせて、1つの列ですべて実行することもできます。最終的な数式は次のようになります(これが唯一の方法ではありません)。
: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関数のリファレンス > 日付時刻関数をご覧ください。
Re: 時系列で時間ごとにデータを集計するにはどうすればよいですか?JM:
私はプロセス データ ヒストリアンからのセンサー時系列データをよく扱います。
データは均等間隔(例えば1分平均やスナップショット)ですか?それとも、タイムスタンプは1時間以内の任意の時刻から取得できますか?データを1時間平均に集計しますか?それとも、タイムスタンプを最も近い時間に丸めますか?
どちらの場合でも、最も簡単な方法は、タイムスタンプ列を右クリック > 新しい数式列 > 変換 > 丸め > 最も近い 1 時間を選択することです。
丸められたタイムスタンプを作成したら、時間平均を作成するには、テーブル > 概要 > グループ: 丸められたタイムスタンプ; 必要な統計を含むデータ列を追加します < テーブルの概要>
これについてさらに議論させていただきます。
Re: 時系列で時間ごとにデータを集計するにはどうすればよいですか?@マークシャール
とても快適でした!!
ニース : )
Re: 時系列で時間ごとにデータを集計するにはどうすればよいですか?ああ、 Date Increment() はバックグラウンドでその仕事を実行します。
同じ関数が GraphBuilder でもビニングを実行します。非常に便利です。
0 年まで及ぶ軸について疑問がある場合:
残念ながら、日付の増分()関数は欠損値をそれ自体として扱いません。それらは 0 に丸められます。

ネストされた/ビン化された時間/日付軸のいくつかの改善とバグ修正 & TS-00147884。
Re: 時系列で時間ごとにデータを集計するにはどうすればよいですか?回避策として、間違った行を除外することができます。
式を次のように変更する
tmp = Date Increment( :"date-time"n, "Hour", 0 );
If( tmp == -60084288000,.,tmp); // "0" = -60084288000
... or use -60084288000 as 欠損値コード via the column properties:

Re: 時系列で時間ごとにデータを集計するにはどうすればよいですか?私はただ次のことを疑問に思いました:

日付と時刻が分単位で丸められるため、欠落しても問題はありません。
説明:

...日付増分なし()
したがって、時間を丸める別の方法は次のとおりです。

: )