Esiste un modo migliore per eseguire un ciclo For con due elenchi?Sono un novellino. Ho un ciclo for nidificato che usa due elenchi che selezionano codici diagnostici specifici da più colonne di diagnosi. Funziona, ma mi chiedevo se ci fosse un modo migliore per codificarlo.
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" ) );
);
)
);
);
Ricerca sui consumatori e sul mercatoAccesso ai datiRe: Un modo migliore per eseguire un ciclo For con due elenchi?Scusa per il ritardo, ho dovuto aggiornare alla versione 17. E il tuo codice funziona perfettamente! Grazie.
Re: Un modo migliore per eseguire un ciclo For con due elenchi?Immagino che tu abbia ragione sul fatto che è quello che vogliono fare. Aggiungendoci, anche se fosse dinamico potresti fare qualcosa del genere.
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: Un modo migliore per eseguire un ciclo For con due elenchi?E questo basterebbe. Sono ancora a 15. Avrei giurato di aver fatto l'aggiornamento. Il COVID mi ha tenuto impegnato.
Re: Un modo migliore per eseguire un ciclo For con due elenchi?Per indice di scripting in JMP 17: aggiunto in JMP 16 (JMP o JMP Pro)

Re: Un modo migliore per eseguire un ciclo For con due elenchi?JMP regolare, dal 16.
Re: Un modo migliore per eseguire un ciclo For con due elenchi?For Each() è disponibile solo in Pro? Ho solo Basic e non funziona. O mi sono perso un aggiornamento da qualche parte?
Re: Un modo migliore per eseguire un ciclo For con due elenchi?O anche questo
dt = Open( "$sample_data/big class.jmp" );
ValueList = {13, 128, 60};
dt << select where( Contains( ValueList, :height ) | Contains( ValueList, :weight ) | Contains( ValueList, :age ) );
Immagina che altezza, peso ed età fossero tutte le stesse unità, simili alle colonne di diagnosi. Penso che questo sia ciò che vuoi se il numero di colonne di diagnosi sarà sempre tre.
Re: Un modo migliore per eseguire un ciclo For con due elenchi?Forse è questo che stai cercando di fare.
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" ) )
)
);
o anche questo
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" ) ) )
);
(Potrebbe avere senso con i tuoi dati, ma con una classe grande non ha molto senso selezionare righe in cui altezza, peso o età sono 13, o in cui altezza, peso o età sono 128, o in cui altezza, peso o età sono 60. Lo sto solo usando per cercare di far corrispondere quello che penso tu intenda.)