Question sur la réorganisation des colonnesJe sais que JMP classe les colonnes par nom dans l'ordre décroissant. Je dois nommer mes colonnes telles qu'elles apparaissent dans notre spécification de test pour faciliter l'identification du test auquel nous faisons référence. J'ai 16 canaux [0 - 15] et 2 identifiants de test [T & R]. Je concatène différents champs de données dans plusieurs colonnes. Un exemple est ci-dessous.Cet ordre complique le traçage et le placement dans un powerpoint car nous devons déplacer toutes les diapositives. Vous pouvez voir dans l'exemple qu'il va 0, 1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9. Toutes les suggestions faciles sur la façon de rectifier cela. Je sais que je pourrais le faire 00, 01, 02,... le commander correctement mais comme je l'ai mentionné, notre spécification omet le zéro non significatif.
CH0 R État 3 @ Fréq
CH0 R État 4 Delta Amp @ Freq
CH0 T État 1 @ Fréq
CH1 R État 3 @ Fréq
CH1 R État 4 Delta Amp @ Freq
CH1 T État 1 @ Fréq
CH10 R État 3 @ Fréq
CH10 R État 4 Delta Amp @ Freq
CH10 T État 1 @ Fréq
CH11 R État 3 @ Fréq
CH11 R État 4 Delta Amp @ Freq
CH11 T État 1 @ Fréq
Re : Question sur la réorganisation des colonnesVeuillez marquer la dernière réponse que j'ai envoyée comme une solution.Cela aide vraiment les autres à trouver les bonnes solutions à l'avenir.
Re : Question sur la réorganisation des colonnesEh bien comme c'est fortuit. Notre service informatique est en train de distribuer JMP 15 pour notre entreprise.
Merci encore.Re : Question sur la réorganisation des colonnesJ'ai écrit le script en utilisant JMP 15, qui a correctement évalué le
Colonne( i ) << obtenir le nom .
Cependant, après votre réponse, je suis revenu en arrière et j'ai découvert que JMP 14 et les versions antérieures nécessitaient un Eval() pour forcer JMP à obtenir les résultats de << get name
Eval( Column( i ) << get name )
Le code ci-dessous fonctionne pour JMP 15 et les versions précédentes
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 : Question sur la réorganisation des colonnesMerci Jim pour ton aide... Je vois ce que vous faites lorsque vous ajoutez un '0' en tête forçant le 01 - 10 à s'ordonner correctement. La partie du script censée remplacer les noms par ceux d'origine semble s'exécuter, mais les colonnes ne changent pas. Je suis entré dans les informations de la colonne et la propriété de la colonne indique 'column( i ) << Get Name' est-ce censé être cela ou le nom réel ? Il supprime la propriété de colonne mais ne parvient pas à renommer la colonneRe : Question sur la réorganisation des colonnesVoici un exemple de script qui, pour votre exemple de données, convertit les nombres en nombres à 3 chiffres, réorganise la colonne par nom, puis réinitialise les noms des colonnes aux noms d'origine
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 : Question sur la réorganisation des colonnesJ'essaie de traiter ce que vous décrivez mais je n'arrive pas à le comprendre .. Pourriez-vous s'il vous plaît fournir un exemple?
MerciRe : Question sur la réorganisation des colonnesVous m'avez confondu. Si je comprends bien, vous voulez réorganiser les colonnes par ordre alphabétique, mais il y a des nombres remplis non nuls dans les noms de colonne. Je pense donc que votre question est de savoir comment réorganiser correctement les colonnes, comme si les chiffres étaient remplis de zéros. Cela n'a rien à voir avec le nombre de lignes qu'il y a dans la table de données. Donc ma suggestion ci-dessus devrait toujours tenir. Une fois que vous avez lu dans votre table de données, vous pouvez créer un petit script qui enregistre les noms d'origine dans une nouvelle propriété de colonne, modifier les noms de colonne pour qu'ils n'aient aucun nom rempli, réorganiser les colonnes, puis boucler à nouveau sur les colonnes, en changeant les noms revenir aux noms de colonne d'origine.
Cela fonctionnera très rapidement, car cela ne changera aucune donnée, seulement les noms de colonne.
Qu'est-ce que je rate?Re : Question sur la réorganisation des colonnesMerci Jim..
J'ai oublié de mentionner que je crée cette colonne dans mon script SQL. J'essaie de faire tout ce que je peux avant que la table n'atteigne réellement JMP pour gagner du temps étant donné que j'apporte environ 2 millions de lignes de données. Ainsi, la colonne serait la colonne d'origine.Re : Question sur la réorganisation des colonnesJ'ai traité cela, en ayant un script qui change les noms sous la forme dont j'ai besoin qu'ils soient, puis je peux utiliser la réorganisation par nom.Je crée d'abord dans le script une propriété de colonne appelée "Original Name" afin que je puisse toujours changer le nom.Une fois que le script a apporté les modifications aux noms, il peut alors émettre le
dt << Réorganiser par nom
Après cela, vous pouvez parcourir à nouveau les noms de colonne et prendre la valeur de la propriété de colonne "Nom d'origine", et redéfinir le nom de la colonne sur le nom d'origine.