Pregunta de reordenar columnasSé que JMP ordena las columnas por nombre en orden descendente. Tengo que nombrar mis columnas como aparecen en nuestra especificación de prueba para que sea más fácil identificar a qué prueba nos referimos. Tengo 16 canales [0 - 15] y 2 identificadores de prueba [T & R]. Concateno diferentes campos de datos en varias columnas. A continuación se muestra un ejemplo.Este orden hace que sea complicado trazar y colocar en un powerpoint porque tenemos que mover todas las diapositivas. Puedes ver en el ejemplo que va 0, 1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9. Cualquier sugerencia fácil sobre cómo rectificar esto. Sé que podría hacer que sea 00, 01, 02... hacer que se ordene correctamente, pero como mencioné, nuestra especificación omite el cero inicial.
CH0 R Estado 3 a frecuencia
CH0 R Estado 4 Delta Amp @ Freq
CH0 T Estado 1 a frecuencia
CH1 R Estado 3 @ Frec.
CH1 R Estado 4 Delta Amp @ Freq
CH1 T Estado 1 a frecuencia
CH10 R Estado 3 @ Frec.
CH10 R Estado 4 Delta Amp @ Freq
CH10 T Estado 1 a frecuencia
CH11 R Estado 3 @ Frec.
CH11 R Estado 4 Delta Amp @ Freq
CH11 T Estado 1 a frecuencia
Re: Pregunta sobre reordenar columnasMarque la última respuesta que envié como una solución.Realmente ayuda a otros a encontrar las soluciones correctas en el futuro.
Re: Pregunta sobre reordenar columnasPues que fortuito. Nuestro departamento de TI está en proceso de distribuir JMP 15 para nuestra empresa.
Gracias de nuevo.Re: Pregunta sobre reordenar columnasEscribí el guión usando JMP 15, que evaluó adecuadamente el
Columna ( i ) << obtener nombre .
Sin embargo, después de su respuesta, volví y descubrí que JMP 14 y anteriores requieren un Eval() para obligar a JMP a obtener los resultados de << obtener nombre
Eval( Columna( i ) << obtener nombre )
El siguiente código funciona para JMP 15 y las versiones anteriores
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 12 ),
New Column( "Column 1", Character, "Nominal" ),
New Column( "CH0 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH0 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH0 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) )
);
Wait( 5 ); // Wait 5 seconds so one can see the original example table
// If a column name starts with "CH" adjust the name
For( i = 2, i <= N Cols( dt ), i++,
If( Substr( Column( i ) << get name, 1, 2 ) == "CH",
Column( i ) << set property( "Original Name", Eval( Column( i ) << get name ) );
tempName = Substr( Column( i ) << get name, 3 );
number = Word( 1, tempName, " " );
tempName = Substr( tempName, Length( number ) + 2 );
number = Substr( "00", Length( number ) ) || number;
tempName = "CH" || number || " " || tempName;
Column( i ) << set name( tempName );
)
);
// Reorder the table names
dt << reorder by name;
// Replace the column names with the original names
For( i = 1, i <= N Cols( dt ), i++,
If( Is Empty( Column( i ) << get property( "Original Name" ) ) == 0,
Column( i ) << set name( Column( i ) << get property( "Original Name" ) );
Column( i ) << delete property( "Original Name" );
)
);
Re: Pregunta sobre reordenar columnasGracias Jaime por tu ayuda... Veo lo que está haciendo cuando agrega un '0' inicial que obliga al 01 - 10 a ordenar correctamente. La parte de la secuencia de comandos que se supone que debe cambiar los nombres a los originales parece ejecutarse, pero las columnas no cambian. Entré en la información de la columna y la propiedad de la columna dice 'columna (i) << Obtener nombre' ¿se supone que es ese o el nombre real? Elimina la propiedad de la columna pero no puede cambiar el nombre de la columnaRe: Pregunta sobre reordenar columnasAquí hay una secuencia de comandos de muestra que, para sus datos de ejemplo, convierte los números en números de 3 dígitos, reordena la columna por nombre y luego restablece los nombres de las columnas a los nombres originales.
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 12 ),
New Column( "Column 1", Character, "Nominal" ),
New Column( "CH0 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH0 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH0 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH1 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH10 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 R State 3 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 R State 4 Delta Amp @ Freq", Numeric, "Continuous", Format( "Best", 10 ) ),
New Column( "CH11 T State 1 @ Freq", Numeric, "Continuous", Format( "Best", 10 ) )
);
wait(5); // Wait 5 seconds so one can see the original example table
// If a column name starts with "CH" adjust the name
For( i = 1, i <= N Cols( dt ), i++,
If( Substr( Column( i ) << get name, 1, 2 ) == "CH",
Column( i ) << set property( "Original Name", Column( i ) << get name );
tempName = Substr( Column( i ) << get name, 3 );
number = Word( 1, tempName, " " );
tempName = Substr( tempName, Length( number ) + 2 );
number = Substr( "00", Length( number ) ) || number;
tempName = "CH" || number || " " || tempName;
Column( i ) << set name( tempName );
)
);
// Reorder the table names
dt << reorder by name;
// Replace the column names with the original names
For( i = 1, i <= N Cols( dt ), i++,
If( Is Empty( Column( i ) << get property( "Original Name" ) ) == 0,
Column( i ) << set name( Column( i ) << get property( "Original Name" ) );
Column( i ) << delete property( "Original Name" );
)
);
Re: Pregunta sobre reordenar columnasEstoy tratando de procesar lo que estás describiendo, sin embargo, no puedo resolverlo. ¿Podría proporcionar un ejemplo?
GraciasRe: Pregunta sobre reordenar columnasMe tienes confundido. Si entiendo correctamente, desea reordenar las columnas alfabéticamente, pero hay números que no son cero en los nombres de las columnas. Entonces, creo que su pregunta es cómo reordenar las columnas correctamente, como si los números estuvieran llenos de cero. Eso no tiene nada que ver con cuántas filas hay en la tabla de datos. Así que mi sugerencia anterior aún debería mantenerse. Una vez que lea en su tabla de datos, puede crear un pequeño script que guarde los nombres originales en una nueva propiedad de columna, cambie los nombres de las columnas para que tengan cero nombres, reordene las columnas y luego vuelva a recorrer las columnas, cambiando los nombres. volver a los nombres de las columnas originales.
Esto funcionará muy rápido, ya que no cambia ningún dato, solo los nombres de las columnas.
¿Qué me estoy perdiendo?Re: Pregunta sobre reordenar columnasgracias jim..
Olvidé mencionar que creo esta columna en mi script SQL. Trato de hacer todo lo que puedo antes de que la tabla llegue realmente a JMP para ahorrar tiempo considerando que estoy trayendo alrededor de 2 millones de filas de datos. Entonces la columna sería la columna original.Re: Pregunta sobre reordenar columnasMe he ocupado de esto, al tener un script que cambia los nombres a la forma en que necesito que sean y luego puedo usar Reorder by Name.Primero creo en el script una propiedad de columna llamada "Nombre original" para que siempre pueda volver a cambiar el nombre.Una vez que el script realiza los cambios en los nombres, puede emitir el
dt << Reordenar por nombre
Después de eso, puede volver a recorrer los nombres de las columnas y tomar el valor de la propiedad de la columna "Nombre original", y volver a establecer el nombre de la columna en el nombre original.