Ho una tabella Excel che aggiorno manualmente ogni settimana. Poi, apro questa tabella in JMP e inserisco tutte le colonne dalla colonna 2 in poi. A ogni aggiornamento settimanale, aggiungo altre colonne alla tabella iniziale. Ho seguito di recente un corso introduttivo allo scripting JMP e sto cercando di automatizzare un po' questo processo invece di doverlo ricomporre da zero ogni volta.
Ecco come appare la tabella in JMP prima di eseguire lo Stack:

So come importare la tabella Excel in JMP tramite uno script come questo:
Open(
"Drive:\Folder\File.xlsx",
Worksheets( "Data" ), // etc.
Ma la mia domanda è: come faccio a modificare lo script JMP per chiedergli di impilare le colonne dalla 2 alla fine?
Ho ottenuto quanto segue eseguendo uno Stack manuale in JMP e guardando lo script sorgente:
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" )
);
e ho la struttura di una funzione For( che posso usare:
For( c = 2, i <= N Col(), c++,
//body//ma non so bene come metterli insieme. Si tratta in qualche modo di mettere il comando Stack( all'interno del comando For(?
Grazie a chiunque possa aiutarmi!
Penso che con la piattaforma Stack puoi semplicemente usare l'elenco di colonne nell'argomento columns()
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)
);Quindi ottieni un elenco di nomi di colonna che hai dal datatable che crei dal file excel usando << Ottieni nomi colonna (stringa), quindi rilascia la prima colonna con Rimuovi da()
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(...)Vedere la Guida / Indice degli script e cercare le diverse funzioni utilizzate qui.