Gleitendes Minimum (gleitendes Fenster)Weiß jemand, wie man ein gleitendes Minimum berechnet (oder wie man iterativ eine Anzahl von X Lag-Zeilen auswählt und irgendetwas mit ihnen macht, zum Beispiel ein Minimum, Maximum, einen Bereich usw. berechnet)? In diesem speziellen Beispiel möchte ich mir sagen wir die letzten 100 Zeilen noch einmal ansehen und den Minimalwert ermitteln, dann zur nächsten Zeile nach unten gehen und das Gleiche noch einmal machen (immer und immer wieder).
VersuchsplanungBetreff: Minimum bewegen (Fenster bewegen)Das Makro unten ist nicht besonders elegant, macht aber den Job.
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;
)Das Untereinstellen der ausgewählten Daten, wie ich es getan habe, ist langsam. Vielleicht hat ein anderer Benutzer eine bessere Idee, wie er auf die ausgewählten Daten zugreifen und das gewünschte Produkt extrahieren kann.
Ich frage mich auch, wie eine Spaltenformel aussehen könnte, um die Ergebnisse ohne Makro zu erzielen.
Prost,
Kofi
Betreff: Minimum bewegen (Fenster bewegen)Würde so etwas funktionieren?
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()
]
)
)
);