大家好,
我正在運行 JMP Pro 16.1.0 並且需要一些 JSL 幫助。
我有一個通過導入 CSV 文件生成的數據表,具有以下結構(實際列數要大得多,但表保持這種結構):

我試圖弄清楚如何正確地將結構更改為規格表的典型格式,如下所示:

最終,specs 數據表的列名將更改為 JMP 格式,即:“Column 1”n、“_LSL”n、“_Target”n 和“_USL”n。 每行將是具有相應值的規範。
我遇到的問題是如何使用 JSL 來自動化該過程。 我嘗試過拆分或堆棧的不同組合,但實際上都沒有讓我到達我想去的地方——至少在我使用它們的方式上沒有。 我確信有一種簡單的方法可以做到這一點,但我不知何故錯過了它。
歡迎任何建議。
謝謝!,
DS
我認為使用多系列堆棧時堆棧應該能夠做到這一點。 所有列的數據類型應相同(至少在此方法中)



然後刪除標籤列。 更改堆棧平台中的選項可能會使其更加清晰,但我沒有使用多系列堆棧,但它非常強大。 我會標記@Jeff_Perkinson在這裡,因為我見過他多次使用它,並且可能比我有更好的設置。
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)
);
);這是一個使用 Tables->Stack 的多系列堆棧。
從這張表開始。

並使用 Tables->Stack 和 Multiple Series Stack 選項。

會給你這張桌子。

只需刪除標籤列即可。
這是我從增強日誌中獲得的 JSL。
// 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
);