JMP 脚本用于从每周更新的 Excel 表格的第 2 列到无穷列进行堆叠我有一个 Excel 表格,每周都会手动更新。接下来,我会在 JMP 中打开这个表格,并从第 2 列开始堆叠每一列。每周更新后,我都会在初始表格中添加更多列。我最近参加了 JMP 脚本入门课程,希望能够稍微自动化一下这个过程,而不是每次都从头开始重新堆叠。
执行 Stack 之前,JMP 中的表如下所示:

我知道如何通过如下脚本将 Excel 表导入 JMP:
Open(
"Drive:\Folder\File.xlsx",
Worksheets( "Data" ), // etc.
但我有一个问题,我该如何更改 JMP 脚本以要求它将第 2 列堆叠到末尾?
我在 JMP 中执行手动 Stack 并查看源脚本时得到以下信息:
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(...)请参阅帮助/脚本索引并搜索此处使用的不同功能。