Gibt es eine Möglichkeit, JMP dazu zu bringen, Spaltenformeln auszuwerten, die in der unteren Zeile beginnen und dann aufarbeiten (im Gegensatz zur Standard-oberen Zeile zuerst)?
Das angehängte Bild ist eine Beispielformel, die ich erstellt habe. Für jede Zeile wird der Wert in der Spalte "Daten" angegeben, es sei denn, der Wert "Daten" fehlt. In diesem Fall füllt es sich mit dem nächsten Wert in der Spalte "Formel" (dh selbst). Im Idealfall möchte ich, dass die derzeit in der Spalte "Formel" angezeigten fehlenden Werte mit "7" gefüllt werden. Da die Formel jedoch ab der obersten Zeile ausgewertet wird, fehlt der nächste Wert in der Spalte "Formel", bis er angezeigt wird zu Reihe 7. Wenn diese Formel beginnend in der unteren Zeile und nach oben ausgewertet würde, würde Lag (: "Formel", - 1) niemals fehlende Werte zurückgeben. Gedanken?
HINWEIS: Wenn ich in der Spaltenformel-GUI weiterhin auf die Schaltfläche "Übernehmen" drücke, füllt die Spalte "Formel" nacheinander "7" für die Zeilen 1 bis 7 aus, aber ich kann das nicht mehr tun komplexe Anwendungen, bei denen ich nicht weiß, wie viele Zeilen leerer Daten vorhanden sind.
Hier sind zwei verschiedene Möglichkeiten, um das zu tun, was Sie wollen

Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 12 ),
New Column( "data",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., ., ., ., ., ., ., 7, 8, 9, 10, 11] )
)
);
// Method one
dt << New Column( "Row", formula( Row() ) );
dt:Row << delete formula;
dt << sort( by( :Row ), order( descending ), replace table( 1 ) );
dt << New Column( "formula1",
formula( If( Is Missing( :data ), Lag( :data ), :Data ) )
);
dt:formula1 << delete formula;
dt << sort( by( :Row ), order( ascending ), replace table( 1 ) );
dt << delete columns( {Row} );
// Method two
dt << New Column( "formula2",
formula(
If( Row() == 1,
dMat = :data << get as matrix;
fMat = Matrix( Index( 1, N Rows( dMat ) ) );
fMat[0] = .;
fMat = fMat`;
For( i = N Rows( fMat ), i >= 1, i--,
If( Is Missing( dMat[i] ),
fMat[i] = dMat[i + 1],
fMat[i] = dMat[i]
)
);
);
fMat[Row()];
)
);