JMPに列の数式を下の行から始めて(最初のデフォルトの上の行ではなく)上に向かって評価させる方法はありますか?
添付の画像は、私が作成した数式の例です。 「data」値が欠落していない限り、各行について、「data」列の値が入力されます。その場合、「式」列の次の値(つまりそれ自体)が入力されます。 理想的には、「formula」という名前の列に現在表示されている欠落値に「7」を入力する必要がありますが、式は一番上の行から評価されるため、「formula」列の次の値は次の値になるまで欠落しています。行7に。 この式が一番下の行から上に向かって評価された場合、Lag(: "formula"、-1)は欠落した値を返すことはありません。 考え?
注:列の数式GUIで[適用]ボタンを押し続けると、最終的に[数式]列に1行目から7行目までの「7」が1つずつ入力されますが、実際にはそれ以上はできません。空のデータの行がいくつあるかわからない複雑なアプリケーション。
ここにあなたがやりたいことをする2つの異なる方法があります

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