Une meilleure façon de faire une boucle For avec deux listes ?Noob ici. J'ai une boucle for imbriquée qui utilise deux listes qui sélectionnent des codes de diagnostic spécifiques à partir de plusieurs colonnes de diagnostic. Cela fonctionne, mais je me demandais s'il existait une meilleure façon de le coder.
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" ) );
);
)
);
);
Études de marché et de consommationAccès aux donnéesRe : Une meilleure façon de faire une boucle For avec deux listes ?Désolé pour le retard, j'ai dû mettre à jour vers la version 17. Et votre code fonctionne parfaitement ! Merci.
Re : Une meilleure façon de faire une boucle For avec deux listes ?Je suppose que tu as raison, c'est ce qu'ils veulent faire. En plus, même si c'était dynamique, tu pourrais faire quelque chose comme ça.
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 : Une meilleure façon de faire une boucle For avec deux listes ?Et ça suffirait. J'ai toujours 15 ans. J'aurais juré que j'avais mis à jour mes données. Le COVID m'a tenu occupé.
Re : Une meilleure façon de faire une boucle For avec deux listes ?Par index de script dans JMP 17 : ajouté dans JMP 16 (JMP ou JMP Pro)

Re : Une meilleure façon de faire une boucle For avec deux listes ?JMP régulier, depuis 16.
Re : Une meilleure façon de faire une boucle For avec deux listes ?For Each() est-il uniquement disponible dans Pro ? Je n'ai que Basic et cela ne fonctionne pas. Ou ai-je raté une mise à jour quelque part ?
Re : Une meilleure façon de faire une boucle For avec deux listes ?Ou même ça
dt = Open( "$sample_data/big class.jmp" );
ValueList = {13, 128, 60};
dt << select where( Contains( ValueList, :height ) | Contains( ValueList, :weight ) | Contains( ValueList, :age ) );
Imaginez simplement que la taille, le poids et l'âge soient tous les mêmes unités, comme les colonnes de diagnostic. Je pense que c'est ce que vous voulez si le nombre de colonnes de diagnostic doit toujours être de trois.
Re : Une meilleure façon de faire une boucle For avec deux listes ?C'est peut-être ce que vous essayez de faire.
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" ) )
)
);
ou même ça
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" ) ) )
);
(Cela peut avoir du sens avec vos données, mais avec une grande classe, cela n'a pas beaucoup de sens de sélectionner des lignes où la taille, le poids ou l'âge sont de 13, ou où la taille, le poids ou l'âge sont de 128, ou où la taille, le poids ou l'âge sont de 60. Je l'utilise juste pour essayer de faire correspondre ce que je pense que vous voulez dire.)