Hallo alle,
Ich verwende JMP Pro 16.1.0 und benötige etwas JSL-Hilfe.
Ich habe eine Datentabelle, die aus dem Import einer CSV-Datei generiert wird und die folgende Struktur hat (die tatsächliche Anzahl der Spalten ist viel größer, aber die Tabelle behält diese Struktur bei):

Ich versuche herauszufinden, wie ich die Struktur korrekt in das typische Format ändern kann, damit eine Spezifikationstabelle wie folgt aussieht:

Schließlich werden die Spaltennamen für eine Spezifikationsdatentabelle in das JMP-Format geändert, nämlich: „Spalte 1“n, „_LSL“n, „_Target“n und „_USL“n. Jede Zeile ist eine Spezifikation mit den entsprechenden Werten.
Das Problem, das ich habe, ist, wie man dies mit JSL macht, um den Prozess zu automatisieren. Ich habe verschiedene Kombinationen von Split oder Stack ausprobiert, aber keine bringt mich wirklich dorthin, wo ich hin will – zumindest nicht in der Art und Weise, wie ich sie verwendet habe. Ich bin sicher, es gibt einen einfachen Weg, dies zu tun, aber ich vermisse es irgendwie.
Alle Vorschläge sind willkommen.
Danke!,
DS
Ich denke, Stack sollte dazu in der Lage sein, wenn Stack mit mehreren Serien verwendet wird. Datentypen sollten für alle Spalten gleich sein (zumindest bei dieser Methode)



und entfernen Sie dann Beschriftungsspalten. Das Ändern der Optionen in der Stapelplattform könnte es noch klarer machen, aber ich habe nicht mehrere Serienstapel verwendet, aber es ist sehr leistungsfähig. Ich werde taggen @Jeff_Perkinson hier, weil ich gesehen habe, wie er es mehrmals verwendet hat und möglicherweise bessere Einstellungen dafür hat als ich.
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)
);
);Dies ist ein Multiple Series Stack mit Tables->Stack.
Beginnend mit dieser Tabelle.

Und mit Tables->Stack to mit der Option Multiple Series Stack.

Werde dir diesen Tisch besorgen.

Löschen Sie einfach die Label-Spalten und schon sind Sie fertig.
Hier ist die JSL, die ich aus dem erweiterten Protokoll erhalten habe.
// 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
);