有没有一种方法可以使JMP评估列公式从最下面的行开始然后进行计算(与默认的最上面的行相反)?
所附图片是我制作的示例公式。 对于每一行,除非缺少“数据”值,否则它将使用“数据”列中的值填充自身。在这种情况下,它将使用“公式”列中的下一个值(即本身)填充自身。 理想情况下,我希望当前在名为“公式”的列中显示的缺失值填充为“ 7”,但是由于该公式从第一行开始计算,因此缺少“公式”列中的下一个值,直到得到到第7行 如果此公式从下一行开始计算并向上移动,则Lag(:“ formula”,-1)将永远不会返回任何缺失值。 有什么想法吗?
注意:如果我一直按列公式GUI中的“应用”按钮,最终“公式”列确实一次将1-7行填充为“ 7”,但实际上我不能再这样做了复杂的应用程序,我不知道有多少行空数据。
这是两种您想做的不同方式

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