JSL を使用した式で特定の行値を使用する昔 VB で学んだことをやりたいのですが、JMP スクリプト言語で苦労しています。 JMP を初めて使用します。
数式で For ループを実行したいのですが、セル配列を使用します。
たとえば、次のように列を参照できることがわかっています。 j = Column ("a");
j[4] = 77 + 2; とすると、列「a」、行 4 の値 79 を取得します。
ただし、列 "a" でループを実行したい場合はどうなるでしょうか。たとえば、For(i=1,i<=20,i++,使用するいくつかの式j[i]);
添付ファイルでは、列 B の行 [1] と列 C の行 1 ~ 5 を使用したいと考えています。 次に、列 B の行 [6] と列 C の行 6 から 10 です。 私の目的は、列 A のシーケンスを識別子として使用することです。したがって、シーケンスの値が 1 になるたびに、その数式を 5 回以降使用するまでこの値を保持します。列 D に何が入るかは、内容に対して実行される算術によって異なります。 B 列と C 列の (例: 列 D= 列 B の値 + 列 C の値。) 添付ファイルを参照して、私の意味を図で確認してください。
ご協力いただければ幸いです。
Re: JSL を使用した数式で特定の行値を使用する結局、JMP スクリプトの動作方法を理解するのに時間がかかりました。 添付ファイルには、私が行った内容が表示されており、それが私にとって効果的です。 (この例は、この説明を開始するために使用した単純な例とは異なります。)
誰かがこの種の問題に別の方法でアプローチする方法についてのヒントを持っている場合は、コメントしてください。 基本的な VB プログラミングで for ループと if 条件を長年使用してきたが、JMP は初めてなので、JMP スクリプトへのアプローチ方法をよりよく理解するためのガイダンスが必要かもしれません。
Re: JSL を使用した数式で特定の行値を使用するありがとう、ジム!
Re: JSL を使用した数式で特定の行値を使用する質問はありますか?
Re: JSL を使用した数式で特定の行値を使用するこのスクリプトを使用して、過去 30 日間の平均がターゲットと比較して +1 シグマを超えている場合にセルを黄色に色付けしています。
のために(私= 1 、私<= N列( dt ) 、私++、
もし(カラム( dt 、 「平均して30日」 )[私】 > ((カラム( dt 、 "目標" )[私]) +カラム( dt 、 「標準」 )[私】 ) 、
カラム( dt 、 「平均して30日」 ) <<カラーセル( 9 、 {私} )
)
) ;
Re: JSL を使用した数式で特定の行値を使用する次の式は、添付の例で機能します
targetrow = (Row() - :Name( "Column-A" )) + 1;
:Name( "Column-B" )[targetrow] + :Name( "Column-C" );
数式は常にすべての行をループし、関数 Row() は現在作業中の行を常に提供することに注意してください。 JMP で数式を使用する場合、特定の行を調べたときにどのような結果が必要かを検討する必要があります。 VBとは異なるパラダイムです
これは、探しているForループを実行する別のバージョンです。
If( :Name( "Column-A" ) == 5,
For( i = Row() - 4, i <= Row(), i++,
:Name( "Column-D" )[i] = :Name( "Column-B" )[Row() - 4] + :Name( "Column-C" )[i]
)
);
// The last value calculated will be the value for the current row,
// so it needs to be handled as a special case
:Name( "Column-B" )[Row() - 4] + :Name( "Column-C" )[Row()];
技術的には、最後の行が検出されるまですべての行のすべての処理をバイパスし、その後プログラムの制御下で戻ってすべての行をループすることができれば、VB の世界に近似できると思います。大変な仕事のようですね
dt=current data table();
If(Row()==N Rows(dt),
<DO whatever="" processing="" you="" want="">
);
<PROCESS for="" the="" current=""></PROCESS></DO>