Riordina colonne DomandaSo che JMP sta ordinando le colonne per nome in ordine decrescente. Devo nominare le mie colonne come appaiono nella nostra specifica del test per rendere più facile identificare a quale test ci riferiamo. Ho 16 canali [0 - 15] e 2 identificatori di test [ T & R ]. Concatenare diversi campi dati in più colonne. Un esempio è sotto.Questo ordine rende fastidioso tracciare e posizionare in un powerpoint perché dobbiamo spostare tutte le diapositive. Puoi vedere dall'esempio che va 0, 1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9. Eventuali semplici suggerimenti su come correggere questo problema. So che potrei farlo 00, 01, 02,... ordinarlo correttamente ma come ho detto, le nostre specifiche omettono lo zero iniziale.
CH0 R Stato 3 @ Freq
CH0 R Stato 4 Delta Amp @ Freq
CH0 T Stato 1 @ Freq
CH1 R Stato 3 @ Freq
CH1 R Stato 4 Delta Amp @ Freq
CH1 T Stato 1 @ Freq
CH10 R Stato 3 @ Freq
CH10 R Stato 4 Delta Amp @ Freq
CH10 T Stato 1 @ Freq
CH11 R Stato 3 @ Freq
CH11 R Stato 4 Delta Amp @ Freq
CH11 T Stato 1 @ Freq
Ri: Domanda Riordina ColonneContrassegna l'ultima risposta che ho inviato come soluzione.Aiuta davvero gli altri a trovare le soluzioni corrette in futuro.
Ri: Domanda Riordina ColonneEbbene quanto fortuito. Il nostro reparto IT sta distribuendo JMP 15 per la nostra azienda.
Grazie ancora.Ri: Domanda Riordina ColonneHo scritto lo script utilizzando JMP 15, che ha valutato correttamente il file
Colonna( i ) << prendi nome .
Tuttavia, dopo la tua risposta, sono tornato indietro e ho scoperto che JMP 14 e versioni precedenti richiedono un Eval() per forzare JMP a ottenere i risultati di << get name
Eval( Colonna( i ) << prendi nome )
Il codice seguente funziona per JMP 15 e le versioni precedenti
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" );
)
);
Ri: Domanda Riordina ColonneGrazie Gim per il tuo aiuto... Vedo cosa stai facendo quando aggiungi uno "0" iniziale costringendo lo 01 - 10 a ordinare correttamente. La parte dello script che dovrebbe riportare i nomi a quelli originali sembra essere eseguita ma le colonne non cambiano. Sono entrato nelle informazioni sulla colonna e la proprietà della colonna legge 'column( i ) << Ottieni nome' dovrebbe essere quello o il nome effettivo? Rimuove la proprietà della colonna ma non riesce a rinominare la colonnaRi: Domanda Riordina ColonneEcco uno script di esempio che per i dati di esempio converte i numeri in numeri a 3 cifre, riordina la colonna per nome e quindi reimposta i nomi delle colonne sui nomi originali
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" );
)
);
Ri: Domanda Riordina ColonneSto cercando di elaborare ciò che stai descrivendo, ma non riesco a capirlo .. Potresti per favore fornire un esempio?
GrazieRi: Domanda Riordina ColonneMi hai confuso. Se ho capito bene, vuoi riordinare le colonne in ordine alfabetico, ma ci sono numeri pieni diversi da zero nei nomi delle colonne. Quindi penso che la tua domanda sia, come riordinare correttamente le colonne, come se i numeri fossero pieni di zero. Questo non ha nulla a che fare con quante righe ci sono nella tabella dei dati. Quindi il mio suggerimento sopra dovrebbe ancora essere valido. Dopo aver letto nella tabella dei dati, puoi creare un piccolo script che salva i nomi originali in una nuova proprietà di colonna, modificare i nomi delle colonne in modo che abbiano zero nomi riempiti, riordinare le colonne e quindi ripetere il ciclo tra le colonne, modificando i nomi torna ai nomi delle colonne originali.
Questo funzionerà molto velocemente, poiché non modifica alcun dato, solo i nomi delle colonne.
Cosa mi manca?Ri: Domanda Riordina ColonneGrazie Jim..
Ho dimenticato di menzionare che creo questa colonna nel mio script SQL. Cerco di fare il più possibile prima che la tabella raggiunga effettivamente JMP per risparmiare tempo considerando che sto portando circa 2 milioni di righe di dati. Quindi la colonna sarebbe la colonna originale.Ri: Domanda Riordina ColonneMi sono occupato di questo, avendo uno script che cambia i nomi nella forma che mi serve e quindi posso usare Riordina per nome.Per prima cosa creo nello script una proprietà di colonna chiamata "Nome originale" in modo da poter sempre cambiare il nome.Una volta che lo script ha apportato le modifiche ai nomi, può quindi emettere il file
dt << Riordina per nome
Successivamente, puoi ripetere il ciclo dei nomi delle colonne e prendere il valore dalla proprietà della colonna "Nome originale" e reimpostare il nome della colonna sul nome originale.