毎週手動で更新しているExcelテーブルがあります。次に、このテーブルをJMPで開き、2列目以降のすべての列をスタックします。毎週更新するたびに、最初のテーブルに列を追加していきます。最近、JMPスクリプト入門クラスを受講したのですが、毎回最初からスタックし直すのではなく、このプロセスをある程度自動化したいと思っています。
スタックを実行する前の JMP でのテーブルは次のようになります。

次のようなスクリプトを使用して Excel テーブルを JMP にインポートする方法を知っています。
Open(
"Drive:\Folder\File.xlsx",
Worksheets( "Data" ), // etc.
しかし、疑問なのは、列 2 から列末までをスタックするように JMP スクリプトを変更するにはどうすればよいかということです。
JMP で手動でスタックを実行し、ソース スクリプトを確認すると、次のようになります。
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" )
);
そして、使用できるFor(関数のフレームワークがあります:
For( c = 2, i <= N Col(), c++,
//body//でも、どう組み合わせればいいのかよく分かりません。Stack( コマンドを For( コマンドの中に入れればいいのでしょうか?
助けてくれる人に感謝します!
Stackプラットフォームでは、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)
);したがって、<< Get Column Names(String)を使用して、Excelファイルから作成したデータテーブルから列名のリストを取得し、Remove From()を使用して最初の列を削除します。
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(...)ヘルプ/スクリプトインデックスを参照し、ここで使用されているさまざまな関数を検索してください。