Ordenar columna por propiedades de columnaHola comunidad JMP,
¿Hay alguna manera de ordenar las columnas por la propiedad de la columna?
Tengo una tabla de datos donde la columna contiene la propiedad "Número de prueba" (ver más abajo).
Quiero ordenar todas las columnas en el grupo de columnas "Pruebas" por la propiedad de columna "Número de prueba"
Adjunto la tabla de datos a continuación. ¿Alguna sugerencia?

¡Gracias, Jackie!
Automatización y secuencias de comandosRe: Ordenar columna por propiedades de columnaHola @Jackie_ ,
Espero que algo como esto funcione para lo que quieres. La sintaxis probablemente sea incorrecta, pero la idea está en el camino correcto. Creo que usar las matrices asociativas es el camino más fácil, ya que automáticamente ordena las entradas en orden ascendente/alfabético inherentemente.
Tenga en cuenta que me he ido group_tests_cols vacío. Veo que los ha agrupado en "Pruebas", por lo que probablemente tenga una lista o un método para recuperar todos los nombres de columna para crear una lista.
Names default to here(1);
dt = current data table();
group_tests_cols = { };
// automatically sorts key data in ascending / alphabetical order
aa_tests_cols = Associative Array();
// Puts all of the test numbers as the keys in the AA
for( a = 1, a <= N Items( group_tests_cols ), a++,
test_number = column( dt, group_tests_cols[a] ) << Get Property( "Formula" );
eval( eval expr( aa_tests_cols[ expr( test_number ) ] ) ) = group_tests_cols[a];
);
aa_keys = aa_tests_cols << Get keys;
// Moves columns in the order of the keys
for( b = 1, b <= N Items( aa_keys ), b++,<BR /> col_name = aa_tests_cols[ aa_keys[b] ]; // uses index of the key to retrieve the actual value of the key, to get the col name
eval( eval expr( expr( column( dt, col_name ) ) << Move Selected Columns( expr( { as column( col_name ) } ), after( :name ) ) ) );
);
Re: Ordenar columna por propiedades de columnaAquí hay un script de trabajo que encuentra los valores de los números de prueba y luego ordena las columnas en función de ellos.
Names Default To Here( 1 );
dt = Current Data Table();
//Get the test numbers and the column names associated with them
valList = {};
testList = {};
For Each( {col}, dt << get column group( "Tests" ),
Show( col );
Insert Into( valList, Num( col << get property( "Test Number" ) ) );
Insert Into( testList, Char( col << get name ) );
);
// Sort the test numbers
sortedList = Sort List( valList );
// Loop through the test orders and reorder the columns
For Each( {test, index}, sortedList,
theCol = Contains( valList, sortedList[N Items( sortedList ) + 1 - index] );
dt << go to( testList[theCol] );
dt << Move Selected Columns( To first );
);
Otros pueden tener una mejor manera de realizar esta tarea
Re: Ordenar columna por propiedades de columna¡Gracias, Jim!
Re: Ordenar columna por propiedades de columnaCreo que esto funcionaría en versiones anteriores a JMP17
Names Default To Here( 1 );
dt = Current Data Table();
aa = Associative Array();
For Each({col}, dt << get column group("Tests"),
aa[col << get name] = Num(col << get property("Test Number"));
);
Eval(EvalExpr(
dt << Move Selected Columns(Expr((aa << get keys)[Rank(aa << get values)]), To last)
));
En JMP17 (al menos JMP17.0) se cambió el comportamiento de Mover columnas seleccionadas (por accidente) ¿Alguna idea de por qué Move Selected Columns funciona con una lista se cambió en JMP17?
Re: Ordenar columna por propiedades de columna¡Gracias, Jarmo!
Re: Ordenar columna por propiedades de columna@jthi I en JMP 17 y la selección de movimiento no funciona.
Múltiples comandos Mover columnas seleccionadas no serían robustos por ¿Alguna idea de por qué Move Selected Columns funciona con una lista se cambió en JMP17?
Cualquier solución que pueda sugerir para esto:
Names Default To Here( 1 );
dt = Current Data Table();
aa = Associative Array();
For Each({col}, dt << get column group("Tests"),
aa[col << get name] = Num(col << get property("Test Number"));
);
Eval(EvalExpr(
dt << Move Selected Columns(Expr((aa << get keys)[Rank(aa << get values)]), To last)
));
Re: Ordenar columna por propiedades de columnaRealizar múltiples movimientos de columnas seleccionadas dentro de un bucle debería funcionar. Solo tiene que crear primero la lista de orden para las columnas y luego hacer un bucle en consecuencia