¿Hay alguna manera de hacer que JMP evalúe las fórmulas de columna comenzando en la fila inferior y luego trabajando hacia arriba (a diferencia de la fila superior predeterminada primero)?
La imagen adjunta es un ejemplo de fórmula que hice. Para cada fila, se rellena con el valor de la columna "datos", a menos que falte el valor de "datos"; en ese caso, se rellena con el siguiente valor en la columna "fórmula" (es decir, él mismo). Idealmente, me gustaría que los valores faltantes que se muestran actualmente en la columna llamada "fórmula" se completen con "7", pero debido a que la fórmula se evalúa comenzando en la fila superior, falta el siguiente valor en la columna "fórmula", hasta que se obtiene a la fila 7. Si esta fórmula se evalúa comenzando en la fila inferior y subiendo, entonces Lag (: "fórmula", - 1) nunca devolvería ningún valor faltante. Pensamientos
NOTA: Si sigo presionando el botón "Aplicar" en la GUI de la fórmula de la columna, eventualmente la columna "fórmula" completará "7" para las filas 1-7 una a la vez, pero en realidad no puedo hacer eso en más aplicaciones complejas donde no sé cuántas filas de datos vacíos hay.
Aquí hay dos formas diferentes de hacer lo que quiere

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()];
)
);