forループを使用して修正番号とJSLの複数列を比較し、出力用に新しい列を生成しますこんにちはJSLエキスパート、私はJSLのスターターです。複数の列の比較を実行したいのですが、列名はCol1、Col2、Col3などです。 この比較には For ループを使用しており (スクリプト全体については以下を参照)、数式 (以下を参照) に該当する場合は、0 または 1.1 を出力します。 私が知っているのは、:Col1 をスクリプト :Col1 に入れると、スクリプトは次のように正常に動作するということです。 2. 私が知らないのは、:Col1 を Column( dt, i ) に置き換えると、スクリプトが機能しないということです。 :Name, :"Name" も使用しようとしましたが、:Col1 を置き換えるものはありません。 複数の列の比較を行う方法を知っている人はいますか? 変更部分の例: これはうまくいきます: New Column(Name, Character, "Nominal", Formula(If( 1 > :Col1 >0, 0,1)) これはうまくいきません: New Column(Name, Character, "Nominal", Formula(If( 1 > :Column( dt, i ) >0, 0,1)) スクリプト全体の例: dt1 = table1; dt = table2; For( i = 1, i < N Col( dt ) + 1, i++, Name = Column( dt, i ) << get name; If( Contains( Name, "ABCD" ), For( j = 1, j <= N Row( dt1 ), j++, GGG = Column( dt1, "GGGer" )[j]; New Column( Name, Character, "Nominal", Formula( If( 1 > :Col1 > 0, "0", "Fail" ) ) ); ); ) ); );Re: forループを使ってJSLの複数列比較を修正番号にして、out用に新しい列を生成する//すべての画像を要約テーブルに追加します
directory = ディレクトリを選択();
fileNames = ディレクトリ内のファイル( ディレクトリ );
summary = New Table( "summary", New Column( "name", character ), New Column( "rows", numeric ) );
For( iFile = 1, iFile <= N Items( ファイル名 ), iFile++,
ファイル名 = ファイル名[iFile];
If( Ends With( ファイル名, ".JPG" ),
// dt = Open( ディレクトリ || ファイル名 );
概要 << addrows( 1 );
概要:名前 = ファイル名;
//summary:rows = N Rows( dt );
// Close( dt, "nosave" );
);
);
Re: for ループを使用して JSL の複数列比較を修正番号に変換し、out 用に新しい列を生成するこんにちは@ストークス、
JSL コミュニティへようこそ。 コミュニティは、問題への対処を支援できるはずです。 ただし、今後の投稿のために、コードを投稿するときに、以下に示す次のオプションのいずれかを使用して挿入してください。 これにより、コードがフォーマットされ、コミュニティ ユーザーがコードを理解しやすくなり、質問に回答しやすくなります。

邪魔にならないようにしたので、問題に対処する方法を見てみましょう。
私があなたの質問を正しく理解していれば -
1. データ テーブルの列を任意のパラメータと比較する方法は?
2. 関数呼び出しで列参照 (Col = Column(dt,i); ) が列名 (:Col1) を直接置き換えないのはなぜですか?
これらの質問にはできる限り対応するように努めますので、返信で何も対応していない場合はお知らせください。
Clear Globals(); Clear Log();
// Open Sample Data
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Acquire Column Names
ColNames = dt1 << Get Column Names("String");
// Define a searchword and look for it in column names
DesiredColsPos1 = list();
DesiredColsPos2 = List();
KeyWord1 = "age";
for(i = 1 , i <= N Cols(dt1), i++,
If(Contains(ColNames[i],KeyWord1),
Insert Into(DesiredColsPos1,i);
);
);
// Display Result
Show(DesiredColsPos1);
// Alternatively
for(i = 1 , i <= N Cols(dt1), i++,
Col = Column(dt1,i); // This gets a reference for the column
Show(Col);
ColName = Col << Get Name;
If(Contains(ColName,KeyWord1),
Insert Into(DesiredColsPos2,i);
);
);
// Display Result
Show(DesiredColsPos2);