2 つのリストで For ループを実行するより良い方法はありますか?初心者です。複数の診断列から特定の診断コードを選択する 2 つのリストを使用するネストされた for ループがあります。これは機能しますが、もっと良いコーディング方法があるかどうか疑問に思っています。
ColumnList = {"DIAGNOSIS_1", "DIAGNOSIS_2", "DIAGNOSIS_3"};
ValueList = {"E871","O480","J449"};*/
For( i = 1, i <= N Items( ColumnList ), i++,
ColumnItem = ColumnList[i];
Eval(
Eval Expr(
As Constant( col = As Name( Expr( ColumnItem ) ) );
For( j = 1, j <= N Items( ValueList ), j++,
ValueItem = ValueList[j];
all_ip << select where( As Column( col ) == ValueItem, Current Selection( "extend" ) );
);
)
);
);
消費者および市場調査データアクセスRe: 2 つのリストで For ループを実行するより良い方法はありますか?遅くなって申し訳ありません。17 にアップデートする必要がありました。コードは完璧に動作します。ありがとうございます。
Re: 2 つのリストで For ループを実行するより良い方法はありますか?彼らがやりたいのはまさにそれだと思います。それに加えて、たとえそれが動的であったとしても、次のようなことができます。
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
col_dict = ["height"=>{13, 128, 60},
"weight"=>{95, 123, 79, 105},
"age"=>{17}
];
//create an orexpression
or_expr = Expr(OR());
for(key = col_dict<<FIRST></FIRST>Re: 2 つのリストで For ループを実行するより良い方法はありますか?それで終わりです。まだ 15 です。更新したはずなのに。COVID のせいで忙しかったんです。
Re: 2 つのリストで For ループを実行するより良い方法はありますか?JMP 17 のスクリプト インデックスごとに: JMP 16 (JMP または JMP Pro) で追加されました

Re: 2 つのリストで For ループを実行するより良い方法はありますか?16 以降の通常の JMP。
Re: 2 つのリストで For ループを実行するより良い方法はありますか?For Each() は Pro でのみ使用できますか? Basic しか持っていませんが、動作しません。それともどこかで更新を見逃したのでしょうか?
Re: 2 つのリストで For ループを実行するより良い方法はありますか?あるいはこれも
dt = Open( "$sample_data/big class.jmp" );
ValueList = {13, 128, 60};
dt << select where( Contains( ValueList, :height ) | Contains( ValueList, :weight ) | Contains( ValueList, :age ) );
身長、体重、年齢がすべて診断列と同様に同じ単位であると想像してください。診断列の数が常に 3 つである場合、これが望ましい状態だと思います。
Re: 2 つのリストで For ループを実行するより良い方法はありますか?おそらくこれがあなたがやろうとしていることです。
dt = Open( "$sample_data/big class.jmp" );
ColumnList = {"height", "weight", "age"};
ValueList = {13, 128, 60};
For Each( {col}, ColumnList,
For Each( {ValueItem}, ValueList,
dt << select where( As Column( dt, col ) == ValueItem, Current Selection( "extend" ) )
)
);
あるいはこれさえも
dt = Open( "$sample_data/big class.jmp" );
ColumnList = {:height, :weight, :age};
ValueList = {13, 128, 60};
For Each( {col}, ColumnList,
For Each( {ValueItem}, ValueList, dt << select where( col == ValueItem, Current Selection( "extend" ) ) )
);
(データの場合は意味があるかもしれませんが、ビッグクラスでは、身長、体重、年齢が 13 の行、身長、体重、年齢が 128 の行、身長、体重、年齢が 60 の行を選択してもあまり意味がありません。これは、私が思うに、あなたが言いたいことと一致させるために使用しているだけです。)