¿Una mejor manera de hacer un bucle For con dos listas?Soy un novato. Tengo un bucle for anidado que utiliza dos listas que seleccionan códigos de diagnóstico específicos de varias columnas de diagnóstico. Funciona, pero me preguntaba si hay una mejor manera de 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" ) );
);
)
);
);
Investigación de mercado y consumoAcceso a datosRe: ¿Una mejor manera de hacer un bucle For con dos listas?Perdón por la demora, tuve que actualizar a la versión 17. ¡Y tu código funciona perfectamente! Gracias.
Re: ¿Una mejor manera de hacer un bucle For con dos listas?Supongo que tienes razón en que eso es lo que quieren hacer. Además, incluso si fuera dinámico, podrías hacer algo como...
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: ¿Una mejor manera de hacer un bucle For con dos listas?Y eso sería todo. Todavía tengo 15 años. Podría haber jurado que actualicé mi cuenta. El COVID me mantuvo ocupado.
Re: ¿Una mejor manera de hacer un bucle For con dos listas?Índice de secuencias de comandos según JMP 17: añadido en JMP 16 (JMP o JMP Pro)

Re: ¿Una mejor manera de hacer un bucle For con dos listas?JMP regular, desde el 16.
Re: ¿Una mejor manera de hacer un bucle For con dos listas?¿For Each() solo está disponible en Pro? Solo tengo Basic y no funciona. ¿O me perdí una actualización en algún lado?
Re: ¿Una mejor manera de hacer un bucle For con dos listas?O incluso esto
dt = Open( "$sample_data/big class.jmp" );
ValueList = {13, 128, 60};
dt << select where( Contains( ValueList, :height ) | Contains( ValueList, :weight ) | Contains( ValueList, :age ) );
Imagínese que la altura, el peso y la edad fueran las mismas unidades, similares a las columnas de diagnóstico. Creo que esto es lo que se busca si la cantidad de columnas de diagnóstico siempre será tres.
Re: ¿Una mejor manera de hacer un bucle For con dos listas?Quizás esto es lo que estás intentando hacer.
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 incluso esto
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" ) ) )
);
(Puede que tenga sentido con tus datos, pero con una clase grande no tiene mucho sentido seleccionar filas donde la altura, el peso o la edad sean 13, o donde la altura, el peso o la edad sean 128, o donde la altura, el peso o la edad sean 60. Solo lo uso para intentar que coincida con lo que creo que quieres decir).