移動最小値を計算する方法 (または、X 個の遅延行を繰り返し選択して、最小値、最大値、範囲などを計算する方法) を知っている人はいませんか。この特定の例では、最後の 100 行をさかのぼって最小値を取得し、次の行に移動して同じことを繰り返します (何度も繰り返します)。
以下のマクロは特にエレガントではありませんが、機能します。
For ( i= 100, i <= N Rows ( dt ), i++,
dt << Select Rows (Index (i-99, i));
dt << Subset(
Selected Rows( 1 ),
Selected Columns ( 0 ),
Output Table ("out")
);
Current Data Table ( Data Table ("out"));
x = Col Minimum ( :YourDataColumn );
Close ( Data Table ( "out"), no save);
Column ( "YourMovingWindow" )[i] = x;
)選択したデータのサブセット化、つまり私が行った方法は遅いです。おそらく、別のユーザーが、選択したデータにアクセスして目的の製品を抽出する方法についてより良いアイデアを持っているでしょう。
また、列の数式がマクロなしで結果を達成するためにどのように見えるかについても疑問に思います。
乾杯、
コフィ
このようなものは動作しますか?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
dt << New Column("Min height 5 back",
Formula(
Min( // since we want a minumum
:height[// the column we want the minimum of
// a slice of the current row minus 5 (minimum 1 so it's still on the datatable)
// and current row
Min( Row() - 5 )::Row()
]
)
)
);