堆叠具有多个名称的列大家好!
假设我有一张如下所示的数据表:
A,B1,B2,C1,C2,D
1,2,3,4,5,16
6,7,8,9,10,16
11,12,13,14,15,16
我想将它们堆叠起来,以便新表看起来像这样:
A、B、C
1,2,4
1,3,5
6,7,9
6,8,10
11,12,14
11,13,15
我有三个列表:一个包含需要保留的列:list_to_keep= {A}、list_to_stack_before= {B1,C1} 和 list_to_stack_after = {B2,C2}。
首先,我编写了一个脚本来创建一个包含新列名的新列表:
新列名称 = {};
str = char(list_to_stack_before);
newstr = substitute(str,“”, “”, “_be_sam”,“”);
新列名称 = 解析(newstr);
然后我尝试循环堆栈函数,但它总是只会添加更多行。我无法使用普通的 Stack 函数,因为它不允许我在 Stacked Data Column 参数中使用多个名称。我该如何解决这个问题?非常感谢,我对 jmp 还很陌生。
自动化和脚本回复:堆叠具有多个名称的列哇,多系列堆栈和堆栈+拆分之间的良好链接!
回复:堆叠具有多个名称的列好的-
很高兴您能够编写脚本。感谢您澄清您正在寻找可扩展的东西以避免重命名许多列。
首先作为题外话 -作为在手动模式下操作列名的技巧和窍门,但在规模上:这快速而强大(但需要小心进行)
- 在列窗格中,选择所有列 - “复制”(将文本放入复制缓冲区)
- 在另一个数据表(或电子表格或文字处理程序)中,“粘贴” - 列表以文本形式创建。
按照您的意愿进行操作(在适当位置输入编辑文本、创建公式列以添加前缀/后缀......等等)...
- “复制”已编辑的文本列表新列名称
- 返回原始表格。清除列选择,然后重新选择窗格中的列列表。“粘贴”以覆盖已编辑的列名称
回到之前提出的表格操作方法。
如果最低字符始终为 1/2(或至少指示应堆叠的列族),则可以通过两个表操作和一个公式来完成。如果操作需要重复,则可以将这些步骤编写成脚本或捕获到工作流生成器中。

添加公式列来修剪“标签”,不包括最低字符

表格通过修剪标签“拆分”数据....

回复:堆叠具有多个名称的列您要删除 D 列吗?在您的实际数据表中,您如何决定删除哪些列?列的命名约定是什么(堆叠前和堆叠后)?通过 JSL 实现自动化应该不难。
*编辑*
另外,倍数的数量总是相同的吗?例如,如果有 B1 和 B2,是否总会有 C1 和 C2,或者也可能有 C3?如果是这样,应该如何处理?
回复:堆叠具有多个名称的列你好,Greg,非常感谢你的回复!
我熟悉堆栈界面,也使用工作流构建器来获取要堆栈的脚本。重命名的问题是,我想要堆栈的列不只有 3 列,而是 40 列,而且我预计它会随着新测量值的增加而增长。
我意识到我可能可以编写一个脚本来使用列表重命名列,但这似乎不是一个很好的解决方法,而且容易出现顺序错误。我希望有一个更顺畅的方法。不幸的是,“新列名”选项不允许使用多个参数。
最好的
回复:堆叠具有多个名称的列你好,新成员
虽然可以编写脚本,但也许可以在编码之前看看你可以走多远(专业提示 - 在 JMP 中它通常相当远)。
表格菜单、堆栈命令将完成大部分操作。实时预览确实很有帮助。

执行此命令后,将“数据”列重命名为 A 和 B,并删除标签列。
如果您想编写脚本,执行堆栈命令后,左上角面板中的绿色“源”三角形将重新执行该操作。右键单击/编辑以查看脚本语法。
要获取脚本语法 - 使用工作流生成器记录步骤,然后使用红色三角形>保存到脚本窗口。