Comment créer un script général/variable pour scinder une table de données et effectuer des calculs ?J'effectue régulièrement la même manipulation et les mêmes calculs de table de données et je souhaite automatiser cela avec un script.
Les étapes générales sont quelque chose comme :

- Diviser la table (diviser la colonne "valeur" par la colonne "attribut") > génère une nouvelle table
- Générer une nouvelle colonne (C) = colonne A + colonne B
- Générer une nouvelle colonne (D) = colonne A / colonne C

Cependant, chaque table a un nombre différent de lignes et des valeurs différentes.Lorsque je clique sur ces fonctions et que j'examine le script généré par JMP, le nombre de lignes et de valeurs dans chaque colonne est codé en dur.Comment puis-je les rendre complètement variables afin de pouvoir exécuter le script sur de nouvelles tables de données de n'importe quelle taille ?
Jusqu'à présent, j'ai un script qui ressemble à ceci, mais il vous demande le nombre de lignes, puis génère simplement une table vide.J'ai du mal à trouver de la documentation, donc toute aide est appréciée!
New Table( "split table",
Add Rows(),
New Script(
"Source",
Data Table() <<
Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property ) ),
New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) ),
New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "C", Numeric, "Continuous", Format( "Best", 12 ), Formula( :Name( "A" ) + :Name( "B" ) ) ),
New Column( "D", Numeric, "Continuous", Format( "Percent", 12, 0 ), Formula( :Name( "A" ) / :Name( "C" ) ) ) )
Re : Comment créer un script général/variable pour diviser une table de données et effectuer des calculs ?Salut Jim,
Désolé pour le tableau de données.Il semble fonctionner correctement sur mon ordinateur, je l'ai donc simplement rechargé.
J'ai essayé votre script et cela fonctionne sauf pour une chose : la création des colonnes "date", "A" et "B" est redondante, car ces colonnes sont transférées vers la nouvelle table par la fonction de table fractionnée.Ainsi le script devient encore plus simple et fonctionne parfaitement :
Names Default To Here( 1 );
// Create a pointer variable to be able to
// reference the current active data table
dt = Current Data Table();
// Create the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add new columns to the split data table
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);
Merci beaucoup!
Re : Comment créer un script général/variable pour diviser une table de données et effectuer des calculs ?1. Votre table de données jointe est corrompue.Je l'ai ouvert à l'aide d'un éditeur de texte et il contient des messages indiquant que les données ont été supprimées.
2. D'après le texte de votre question, je pense comprendre comment vous pensez que votre structure de script devrait faire ce que vous voulez, mais en fait, elle générera simplement une table de données vide... comme vous l'avez signalé.
3. Voici ce que je pense que vous voulez comme point de départ pour votre script
Names Default To Here( 1 );
// Create a pointer variable to be able to reference
// the current active data table
dt = Current Data Table();
// Creat the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add the new columns to the split data table
dt2 << New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) );
dt2 << New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);