Frage zur Neuordnung der SpaltenIch weiß, dass JMP die Spalten nach Namen in absteigender Reihenfolge sortiert. Ich muss meine Spalten so benennen, wie sie in unserer Testspezifikation erscheinen, damit man leichter erkennen kann, auf welchen Test wir uns beziehen. Ich habe 16 Kanäle [0 - 15] und 2 Testkennungen [T & R]. Ich verbinde verschiedene Datenfelder in mehreren Spalten. Ein Beispiel finden Sie unten.Diese Reihenfolge erschwert das Plotten und Platzieren in einer PowerPoint-Präsentation, da wir alle Folien verschieben müssen. Sie können dem Beispiel entnehmen, dass es 0, 1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9 ist. Irgendwelche einfachen Vorschläge, wie man das beheben kann. Ich weiß, dass ich es auf 00, 01, 02 usw. umstellen könnte, um es in die richtige Reihenfolge zu bringen, aber wie ich bereits erwähnt habe, lässt unsere Spezifikation die führende Null weg.
CH0 R Zustand 3 @ Freq
CH0 R State 4 Delta Amp @ Freq
CH0 T-Zustand 1 @ Freq
CH1 R Zustand 3 @ Freq
CH1 R State 4 Delta Amp @ Freq
CH1 T-Zustand 1 bei Freq
CH10 R Zustand 3 @ Freq
CH10 R State 4 Delta Amp @ Freq
CH10 T-Zustand 1 bei Freq
CH11 R Zustand 3 @ Freq
CH11 R State 4 Delta Amp @ Freq
CH11 T-Zustand 1 bei Freq
Betreff: Frage zum Neuordnen von SpaltenBitte markieren Sie die letzte Antwort, die ich gesendet habe, als Lösung.Es hilft anderen wirklich, in Zukunft die richtigen Lösungen zu finden.
Betreff: Frage zum Neuordnen von SpaltenNun, wie zufällig. Unsere IT-Abteilung ist dabei, JMP 15 für unser Unternehmen zu verteilen.
Danke nochmal.Betreff: Frage zum Neuordnen von SpaltenIch habe das Skript mit JMP 15 geschrieben, das das richtig ausgewertet hat
Column( i ) << Name abrufen .
Nach Ihrer Antwort habe ich jedoch erneut festgestellt, dass JMP 14 und früher eine Eval() erfordern, um JMP zu zwingen, die Ergebnisse des << get name abzurufen
Eval( Column( i ) << get name )
Der folgende Code funktioniert für JMP 15 und die Vorgängerversionen
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" );
)
);
Betreff: Frage zum Neuordnen von SpaltenDanke, Jim, für deine Hilfe... Ich verstehe, was Sie tun, wenn Sie eine führende „0“ hinzufügen und so die Reihenfolge von 01 bis 10 erzwingen. Der Teil des Skripts, der die Namen wieder in die Originalnamen ändern soll, scheint zu laufen, aber die Spalten ändern sich nicht. Ich bin in die Spalteninformationen gegangen und die Spalteneigenschaft lautet „column( i ) << Get Name“. Soll das dieser oder der tatsächliche Name sein? Die Column-Eigenschaft wird entfernt, die Spalte kann jedoch nicht umbenannt werdenBetreff: Frage zum Neuordnen von SpaltenHier ist ein Beispielskript, das für Ihre Beispieldaten die Zahlen in dreistellige Zahlen umwandelt, die Spalte nach Namen neu anordnet und dann die Namen der Spalten wieder auf die ursprünglichen Namen zurücksetzt
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" );
)
);
Betreff: Frage zum Neuordnen von SpaltenIch versuche zu verarbeiten, was Sie beschreiben, komme aber nicht dahinter. Könnten Sie bitte ein Beispiel nennen?
DankeBetreff: Frage zum Neuordnen von SpaltenDu hast mich verwirrt. Wenn ich das richtig verstehe, möchten Sie die Spalten alphabetisch neu anordnen, aber die Spaltennamen enthalten nicht mit Nullen gefüllte Zahlen. Ich denke, Ihre Frage ist, wie man die Spalten richtig neu anordnet, als ob die Zahlen mit Nullen gefüllt wären. Das hat nichts damit zu tun, wie viele Zeilen die Datentabelle enthält. Mein obiger Vorschlag sollte also weiterhin gelten. Sobald Sie Ihre Datentabelle eingelesen haben, können Sie ein kleines Skript erstellen, das die ursprünglichen Namen in einer neuen Spalteneigenschaft speichert, die Spaltennamen so ändert, dass sie mit Nullen gefüllte Namen haben, die Spalten neu anordnen und dann erneut eine Schleife über die Spalten durchlaufen und die Namen ändern zurück zu den ursprünglichen Spaltennamen.
Dies wird sehr schnell ausgeführt, da keine Daten, sondern nur die Spaltennamen geändert werden.
Was vermisse ich?Betreff: Frage zum Neuordnen von SpaltenDanke Jim..
Ich habe vergessen zu erwähnen, dass ich diese Spalte in meinem SQL-Skript erstelle. Ich versuche, so viel wie möglich zu tun, bevor die Tabelle tatsächlich JMP erreicht, um Zeit zu sparen, wenn man bedenkt, dass ich etwa 2 Millionen Datenzeilen mitbringe. Die Spalte wäre also die ursprüngliche Spalte.Betreff: Frage zum Neuordnen von SpaltenIch habe dieses Problem gelöst, indem ich ein Skript habe, das die Namen in die von mir benötigte Form ändert, und dann kann ich die Option „Nach Namen neu anordnen“ verwenden.Ich erstelle im Skript zunächst eine Spalteneigenschaft namens „Originalname“, damit ich den Namen jederzeit wieder ändern kann.Sobald das Skript die Änderungen an den Namen vornimmt, kann es die ausgeben
dt << Nach Namen neu anordnen
Danach können Sie die Spaltennamen erneut durchlaufen, den Wert aus der Spalteneigenschaft „Originalname“ übernehmen und den Spaltennamen wieder auf den ursprünglichen Namen setzen.