Tabuler toutes les colonnes numériques d'un tableauSalut,
J'essaie de créer une table tabulée qui contiendra toutes les colonnes numériques (puis une autre avec les catégories).
J'ai essayé d'exécuter ceci mais cela ne fonctionne pas.
Toute suggestion?
AIT
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
NumericCols = {};
for(i = 1, i <= N Cols(dt), i++,
Col = Column(dt,i);
ColDataType = Col << Get Data Type;
If( ColDataType == "Numeric",
Insert Into(NumericCols,Col << Get Name);
);
);
Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Statistics( Mean ) ),
Column Table( Statistics( Std Dev ) ),
Column Table( Statistics( Min ) ),
Column Table( Statistics( Max ) ),
Column Table( Statistics( Median ) ),
Row Table(
Analysis Columns(
NumericCols = {}
)
)
)
)Re : Tabuler toutes les colonnes numériques d'un tableauPS.
J'ai réécrit ce code pour travailler sur des colonnes continues au lieu de numériques. Cela répond mieux à mes besoins, car j'ai plusieurs colonnes qui sont en fait nominales mais qui contiennent des données numériques et des étiquettes de valeur.
Voici le code final que j'ai utilisé.
Names Default To Here( 1 );
dt = currentdatatable();
continuousCols /*NumericCols */ = dt << get column names( continuous /*numeric*/ );
dt << Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Statistics( Mean, Std Dev ) ),
Column Table( Statistics( Min, Max ) ),
Column Table( Statistics( Median ) ),
Row Table( Analysis Columns( Eval( continuousCols /*NumericCols */ ) ) )
)
);
Merci beaucoup pour votre aide!
Re : Tabuler toutes les colonnes numériques d'un tableauVoici une méthode pour faire ce que vous voulez
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
CharacterCols = dt << get column names( nominal );
// Build a string variable that contains the required JSL
theExpr =
"dt << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N, Name( \!"% of Total\!" ) ) ),";
For( i = 1, i <= N Items( CharacterCols ), i++,
theExpr = theExpr ||
"Row Table( Grouping Columns( " || char(CharacterCols[i]) || ") ),";
);
theExpr = theExpr || "));";
// Execute the JSL
eval(parse(theExpr));
D'autres membres de la communauté peuvent avoir une meilleure méthode
Re : Tabuler toutes les colonnes numériques d'un tableauMerci encore d'être resté avec moi. Le deuxième code que vous avez envoyé ne donne toujours pas les résultats dont j'ai besoin.
S'il vous plaît voir ci-dessous les résultats que j'essaie d'obtenir qui est le résultat du code que j'ai posté dans le post précédent, suivi des résultats que j'obtiens de votre code.
Voici ce que j'aimerais obtenir :

Voici ce que j'obtiens en utilisant le code posté:

AIT
Re : Tabuler toutes les colonnes numériques d'un tableauLe problème n'est pas avec le code Tabuler.Le code Tabulate que je vous ai fourni fonctionnera très bien.Le problème est avec le réglage des colonnes pour être dans le tableau.Dans le dernier code que je vous ai envoyé, la déclaration
CharacterCols = dt << get column names( character );
mettre dans la liste CharacterCols, toutes les colonnes de la table de données qui étaient de type de données Caractère.Et la tabulation s'est déroulée correctement avec les colonnes Lot_id, Wafer ID dans Lot ID.Ce sont les 2 seules colonnes de la table de données qui sont de type de données caractère.C'était mon malentendu que votre demande d'inclusion de variables de classification dans la deuxième tabulation signifiait des colonnes de caractères.Mais avec votre correction que la classification doit inclure Wafer et Site dans le Tabulate, nécessite que la liste de colonnes CharacterCols soit générée différemment.Ce qui couvrira toutes les colonnes que vous voulez, c'est de charger cette liste avec toutes les colonnes avec le type de modélisation "Nominal".Par conséquent, un simple changement de l'énoncé en
CharacterCols = dt << get column names( nominal );
Se placera dans la liste CharacterCols, {lot_id, plaquette, ID de plaquette dans l'ID de lot, SITE} ;
Le JSL modifié est ci-dessous
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
CharacterCols = dt << get column names( nominal );
dt << Tabulate(
Set Format( Name( "% of Total" )(9, 0) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Row Table( Grouping Columns( eval( CharacterCols ) ) )
)
);
Re : Tabuler toutes les colonnes numériques d'un tableauMerci pour la réponse, mais le code que vous avez posté ne me fournit pas le tableau dont j'ai besoin.
voici le code, pour l'exemple de fichier de données que vous avez utilisé, qui me donnerait le tableau dont j'ai besoin.
Vous remarquerez que la sortie est différente.
Tabulate(
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Row Table( Grouping Columns( :lot_id ) ),
Row Table( Grouping Columns( :wafer ) ),
Row Table( Grouping Columns( :Wafer ID in lot ID ) ),
Row Table( Grouping Columns( :SITE ) )
)
);
La raison pour laquelle j'ai supposé qu'il y avait une différence est qu'ici chaque tableau de lignes est indiqué séparément, mais dans les données numériques, ils étaient tous sous le même
"Tableau de lignes(Colonnes d'analyse("
puis une liste des noms de colonnes séparés par une virgule.
Cela m'a amené à penser que pour les nombres je pouvais utiliser une simple liste mais pas pour le caractère.
Merci pour la référence au Guide de script Je devrais certainement trouver le temps de l'étudier !
Re : Tabuler toutes les colonnes numériques d'un tableauLa syntaxe Tabuler est PAS totalement différent, en fait il est identique à l'exception des mots "Colonnes d'analyse" changés en "Colonnes de regroupement".
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
CharacterCols = dt << get column names( Character );
dt << Tabulate(
Set Format( Name( "% of Total" )(9, 0) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Row Table( Grouping Columns( eval( CharacterCols ) ) )
)
);
J'aimerais savoir, qu'est-ce qui vous a fait penser que la syntaxe était radicalement différente ?Je suppose que vous exécutez de manière interactive un exemple de tabulation pour les colonnes d'analyse, puis que JMP vous fournit le JSL pour l'échantillon que vous avez exécuté, puis que vous répétez la même chose pour les colonnes de caractères.Cela vous aurait montré JSL presque identique.Je voudrais vous aider à comprendre ce qui vous a amené à la conclusion que vous avez tirée, afin que je puisse vous aider à créer des scripts aussi facilement que possible.
Oh....et vous devez lire le Guide de Scripting.....il n'y a pas de substitut pour le lire.
Aide==>Bibliothèque de documentation JMP...……..Guide de script
Re : Tabuler toutes les colonnes numériques d'un tableauSalut,
Merci beaucoup!
Je vois maintenant que la syntaxe d'une colonne catégorique est totalement différente.
Comment feriez-vous cela si vous voulez un tableau tabulé avec les éléments suivants :
Set Format( Name( "% of Total" )(9, 0) ),
Add Table(
Column Table( Statistics( N, Name( "% of Total" ) ) ),
Re : Tabuler toutes les colonnes numériques d'un tableauVoici une réécriture de votre code qui utilise un moyen plus simple d'obtenir les noms de colonnes numériques, puis ajoute la fonction Eval() autour de la liste des colonnes numériques, pour le faire fonctionner
.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
NumericCols = dt << get column names( numeric );
dt << Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( N ) ),
Column Table( Statistics( Mean, Std Dev ) ),
Column Table( Statistics( Min, Max ) ),
Column Table( Statistics( Median ) ),
Row Table( Analysis Columns( Eval( Numericcols ) ) )
)
);
Re : Tabuler toutes les colonnes numériques d'un tableauPar erreur, j'ai modifié la question ci-dessus et modifié la question en ma réponse. @eliyahu100 Je m'excuse pour mon erreur.