Script JMP pour empiler à partir de la colonne 2-infini à partir d'un tableau Excel mis à jour chaque semaineJ'ai un tableau Excel que je mets à jour manuellement chaque semaine. Ensuite, j'ouvre ce tableau dans JMP et j'empile chaque colonne à partir de la colonne 2. À chaque mise à jour hebdomadaire, j'ajoute des colonnes au tableau initial. J'ai récemment suivi un cours d'introduction aux scripts JMP et je cherche à automatiser un peu ce processus au lieu de le refaire à chaque fois.
Voici à quoi ressemble le tableau dans JMP avant d'exécuter la pile :

Je sais comment importer le tableau Excel dans JMP via un script comme ceci :
Open(
"Drive:\Folder\File.xlsx",
Worksheets( "Data" ), // etc.
Mais là où j'avais une question, c'est comment puis-je modifier le script JMP pour lui demander d'empiler les colonnes 2 jusqu'à la fin ?
J'ai les résultats suivants en effectuant une pile manuelle dans JMP et en regardant le script source :
Data Table( "Data" ) << Stack(
columns(
:Name( "8/23/2021" ),
:Name( "08/30/2021" ),
:Name( "09/06/2021" ),
:Name( "09/13/2021" ),
:Name( "09/20/2021" ) // etc.
),
Source Label Column( "Failure Group Name" ),
Stacked Data Column( "% Share, Week of" )
);
et j'ai le framework d'une fonction For( que je peux utiliser :
For( c = 2, i <= N Col(), c++,
//body//mais je ne sais pas vraiment comment les assembler. Est-ce que cela consiste à mettre la commande Stack( à l'intérieur de la commande For( d'une manière ou d'une autre ?
Merci à tous ceux qui peuvent aider !
Études de marché et de consommationAccès aux donnéesFusion et nettoyage des donnéesRe : Script JMP pour empiler à partir de la colonne 2-infini d'un tableau Excel de mise à jour hebdomadaireJe pense qu'avec la plate-forme Stack, vous pouvez simplement utiliser la liste des colonnes dans l'argument column()
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
cols_to_stack = {"NPN1", "PNP1", "PNP2"};
dt_stacked = dt << Stack(
columns(cols_to_stack),
Source Label Column("Label"),
Stacked Data Column("Data"),
Drop All Other Columns(1)
);Obtenez donc une liste des noms de colonnes que vous avez à partir de la table de données que vous créez à partir du fichier Excel en utilisant << Obtenir les noms de colonnes (chaîne), puis supprimez la première colonne avec Supprimer de ()
Names Default To Here(1);
dt = Open(
"$SAMPLE_IMPORT_DATA/Team Results.xlsx",
Worksheets("Ungrouped Team Results"),
Worksheet Settings(Headers Start on Row(3), Data Starts on Row(4))
);
//all columns
col_names = dt << Get Column Names("String");
//drop first column
Remove From(col_names, 1);
//stack with remaining, won't work exactly like this with this example data, as data types aren't same
//dt_stacked = dt << Stack(...)Voir Aide / Index de script et rechercher les différentes fonctions utilisées ici.
Re : Script JMP pour empiler à partir de la colonne 2 à l'infini à partir d'un tableau Excel mis à jour hebdomadairementVoici une façon de gérer cela.BTW, votre exemple de table de données n'a pas pu être ouvert, j'ai donc ajouté l'un des miens.
names default to here(1);
dt=data table("Example");
colNames = dt << get column names();
remove from(colNames, 1, 2 );
dt << Stack(
columns( colNames
),
Source Label Column( "Failure Group Name" ),
Stacked Data Column( "% Share, Week of" )
);