テーブル処理用スクリプト JMP14こんにちは。元のテーブルを取得して新しいテーブルを作成するスクリプトの作成を手伝っていただけますか? 元のテーブルには、サンプル温度測定ごとに 2 行あります。出力テーブルでは、サンプルごとに 1 行のみを使用し、2 つの測定間の日数と温度差を計算します。
自動化とスクリプトウィンドウズRe: テーブル処理用スクリプト JMP14画像から作成しなくても済むように、サンプルデータを JMP テーブルとして提供していただけますか (形式はスクリプトに大きな影響を与える可能性があります)
Re: テーブル処理用スクリプト JMP14各サンプル (温度と日付) の最大値と最小値を計算する 2 つの数式列を追加できます。

または、以下のスクリプトを実行して、数式列を含むサンプル テーブルを取得します。
New Table( "Example",
Add Rows( 8 ),
New Column( "Sample",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 2, 2, 3, 3, 99, 99] )
),
New Column( "Temperature",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [199, 210, 201, 217, 200, 215, 199, 220] )
),
New Column( "Temp Diff",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Col Maximum( :Temperature, :Sample )
-Col Minimum( :Temperature, :Sample )
)
),
New Column( "Date (ISO 9601 format)",
Numeric,
"Continuous",
Format( "yyyy-mm-dd", 10 ),
Input Format( "yyyy-mm-dd" ),
Set Values(
[3795552000, 3798576000, 3795552000, 3798748800, 3795552000, 3798662400,
3795552000, 3798921600]
)
),
New Column( "Date Diff",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Date Difference(
Col Minimum( :"Date (ISO 9601 format)"n, :Sample ),
Col Maximum( :"Date (ISO 9601 format)"n, :Sample ),
"Day"
)
)
)
)
そして、簡単な要約で、求めていた表が得られます。

Re: テーブル処理用スクリプト JMP14こんにちは、Jarmo。サポートしていただきありがとうございます。添付ファイルをご覧ください。
Re: テーブル処理用スクリプト JMP14こんにちは、ポール。アイデアをありがとうございます。温度差がマイナスになる場合があり、それが私にとって重大な場合、このアプローチは機能しますか?
Re: テーブル処理用スクリプト JMP14わかりました。確認しましたが、機能していません。別の数式を使用して、後の日付と前の日付から温度測定値を選択することはできますか?
Re: テーブル処理用スクリプト JMP14次の式を使用できます
:Temperature - (Col Moving Average(:Temperature, 1, 1, 0, :Sample) * 2 - :Temperature)
そして
(:Date - (Col Moving Average(:Date, 1, 1, 0, :Sample) * 2 - :Date)) / In Days(1)
デルタを計算します。

次に、0 行のない新しいテーブルを作成するか (そのテーブルに数式を含めないでください)、数式を削除して 0 行を削除します。

このスクリプトは JMP14 でも動作すると思います (アクセスできないためテストできません)
Names Default To Here(1);
dt = Open("$DOWNLOADS/source table.jmp");
dt << New Column("Time Delta", Numeric, "Continuous", Formula(
:Temperature - (Col Moving Average(:Temperature, 1, 1, 0, :Sample) * 2
- :Temperature)
));
dt << New Column("Temperature Delta", Numeric, "Continuous", Formula(
(:Date - (Col Moving Average(:Date, 1, 1, 0, :Sample) * 2 - :Date)) /
In Days(1)
));
dt << Select Where(:Temperature Delta == 0) << Invert Row Selection;
dt_subset = dt << Subset(
Copy formula(0),
Selected Rows(1),
Columns({"Sample", "Time Delta", "Temperature Delta"}),
Output Table("Deltas")
);
dt << Clear Select;Re: テーブル処理用スクリプト JMP14ありがとうジャーモ。試してみます。
Re: テーブル処理用スクリプト JMP14Jarmoさん、解決策をありがとうございます。うまくいきました。
しかし、あと2つ質問があります。
1. 移動平均計算の式が何をするのか説明していただけますか? 私はただあなたのアプローチのロジックを理解したいだけです...
2. 最初の行が後の日付である場合、負の時間デルタが返されることに気付きました...時間デルタは常に正である必要があります。最初にソース テーブルを並べ替えてスクリプトが正しく動作するようにすると、機能しますか?
Re: テーブル処理用スクリプト JMP14並べ替えは機能するはずですが、その場合 (順序が常に後 - 前の場合) は他の数式も検討できます。Col Moving Average を使用しているので、グループの前の行の値にアクセスできます。