Ciao a tutti,
Sto eseguendo JMP Pro 16.1.0 e ho bisogno di aiuto JSL.
Ho una tabella di dati generata dall'importazione di un file CSV e ha la seguente struttura (il numero effettivo di colonne è molto più grande, ma la tabella mantiene questa struttura):

Sto cercando di capire come modificare correttamente la struttura nel formato tipico per una tabella delle specifiche in questo modo:

Alla fine, i nomi delle colonne verranno modificati nel formato JMP per una tabella di dati delle specifiche, ovvero: "Column 1"n, "_LSL"n, "_Target"n e "_USL"n. Ogni riga sarà una specifica con i valori corrispondenti.
Il problema che sto riscontrando è come farlo con JSL per automatizzare il processo. Ho provato diverse combinazioni di Split o Stack, ma nessuno dei due mi porta dove voglio andare, almeno non nel modo in cui li ho usati. Sono sicuro che esiste un modo semplice per farlo, ma in qualche modo mi manca.
Qualsiasi suggerimento è il benvenuto.
Grazie!,
ds
Penso che lo stack dovrebbe essere in grado di farlo quando si utilizza lo stack di serie multiple. I tipi di dati devono essere gli stessi per tutte le colonne (almeno in questo metodo)



e quindi rimuovere le colonne etichetta. La modifica delle opzioni nella piattaforma dello stack potrebbe renderlo ancora più chiaro, ma non ho utilizzato più stack di serie, ma è molto potente. Taggherò @Jeff_Perkinson qui, perché l'ho visto usarlo più volte e potrebbe avere impostazioni migliori di me.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("Column 1", Character, "Nominal", Set Values({"x1"})),
New Column("Column 2", Character, "Nominal", Set Values({"1"})),
New Column("Column 3", Character, "Nominal", Set Values({"1.1"})),
New Column("Column 4", Character, "Nominal", Set Values({"1.11"})),
New Column("Column 5", Character, "Nominal", Set Values({"x2"})),
New Column("Column 6", Character, "Nominal", Set Values({"2"})),
New Column("Column 7", Character, "Nominal", Set Values({"2.2"})),
New Column("Column 8", Character, "Nominal", Set Values({"2.22"})),
New Column("Column 9", Character, "Nominal", Set Values({"x3"})),
New Column("Column 10", Character, "Nominal", Set Values({"3"})),
New Column("Column 11", Character, "Nominal", Set Values({"3.3"})),
New Column("Column 12", Character, "Nominal", Set Values({"3.33"}))
);
// data types must be same for stack, so you might have to script it
dt_stacked = dt << Stack(
columns(
:Column 1, :Column 2, :Column 3, :Column 4, :Column 5, :Column 6, :Column 7,
:Column 8, :Column 9, :Column 10, :Column 11, :Column 12
),
Source Label Column("Label"),
Stacked Data Column("Data"),
Stack By Row(0),
Number of Series(4),
Contiguous
);
For Each({col_name}, dt_stacked << get column names("String"),
If(Contains(col_name, "Label"),
dt_stacked << Delete Columns(col_name)
);
);Questa è una pila di serie multiple usando Tabelle->Pila.
A partire da questa tabella.

E usando Tabelle->Impila su con l'opzione Impila serie multiple.

Ti darò questo tavolo.

Basta eliminare le colonne Etichetta e il gioco è fatto.
Ecco il JSL che ho ottenuto dal registro avanzato.
// Stack data table
// → Data Table( "untitled 13" )
Data Table( "untitled 11" ) << Stack(
columns(
:c00000 01, :c00000 02, :c00000 03, :c00000 04, :c00000 05, :c00000 06,
:c00000 07, :c00000 08, :c00000 09, :c00000 10, :c00000 11, :c00000 12
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 4 )
);
// Delete columns
Data Table( "untitled 13" ) << Delete Columns(
:Label, :Label 2, :Label 3, :Label 4
);