有沒有一種方法可以使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()];
)
);