JMP 腳本從每週更新的 Excel 表的第 2 列無窮大堆疊我有一個每週手動更新的 Excel 表格。 接下來,我在 JMP 中打開此表並從第 2 列開始對每一列進行堆疊。 每週更新一次,我會在初始表中添加更多列。 我最近參加了 JMP 腳本介紹課程,我希望能稍微自動化這個過程,而不是每次都從頭開始重新堆疊。
這是執行堆棧之前 JMP 中的表的樣子:

我知道如何通過如下腳本將 Excel 表導入 JMP:
Open(
"Drive:\Folder\File.xlsx",
Worksheets( "Data" ), // etc.
但是我有一個問題是如何更改 JMP 腳本以將其從第 2 列堆疊到最後?
我通過在 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( 命令中?
感謝任何能提供幫助的人!
數據表腳本回复:從每週更新的 Excel 表的第 2 列無窮大的 JMP 腳本堆棧我認為使用 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(...)請參閱幫助/腳本索引並蒐索此處使用的不同功能。
回复:從每週更新的 Excel 表的第 2 列無窮大的 JMP 腳本堆棧這是處理此問題的一種方法。順便說一句,您的示例數據表無法打開,所以我添加了自己的一個。
names default to here(1);
dt=data table("Example");
colNames = dt << get column names();
remove from(colNames, 1, 2 );
dt << Stack(
columns( colNames
),
Source Label Column( "Failure Group Name" ),
Stacked Data Column( "% Share, Week of" )
);