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( 命令中?
感谢任何能提供帮助的人!
数据表脚本回复:JMP 脚本从每周更新的 Excel 表的第 2 列无穷大堆栈我认为使用 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(...)请参阅帮助/脚本索引并搜索此处使用的不同功能。
回复:JMP 脚本从每周更新的 Excel 表的第 2 列无穷大堆栈这是处理此问题的一种方法。顺便说一句,您的示例数据表无法打开,所以我添加了自己的一个。
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" )
);