你好,
我有一个项目,我的目的是从我的数据表 (1) 中提取每列的平均值、最大值和最小值,并将结果写入新表 (2)。
我找到了这部分代码,它似乎适用于少数列,但并非适用于所有列。 我有 300 列,而我只有其中 20 列的结果。
For( i = 1, i <= N Col( dt ), i++,
If (:Trial[i] =="TrialName",
If( Column( dt, i ) << get data type == "Numeric",
Write( "\!n", Column( dt, i ) << get name );
Write( Column( dt, i ), "\!nMin: ", Col Min( Column( dt, i ) ) );
Write( "\!nMax: ", Col Max( Column( dt, i ) ) );
Write( "\!nAverage: ", Col Moving Average( Column( dt, i) ) );
Write ("\!n");
)
)
); 我可以在日志中看到结果,但我无法将结果写入新表 (2) 的右列。
查看更多...此代码显示如下:
第 1 列
最小:10
最大:50
平均:30
这是我想要的一个例子:
表 1:第 1 列:第 2 列:-> 表 2 -----> 第 1 列:第 2 列:
10 45.2 最大:50 最大:52.4
20 48.3 分钟:10 分钟:18.3
30 36.7平均:30 平均:40.18
40 52.4
50 18.3
--->
1. 我认为我所有的数据都不被视为数字,所以 JMP 不想计算最小值、最大值和平均值,但我没有找到“强制”数据类型的方法。
2. 我没有设法将我的结果写在决赛桌 (2) 的列中。
我不要求完整的答案,而只要求提示,因为我真的被卡住了。
谢谢 !
要写入其他表,您可以使用其中的一些 Add Rows() 或 New Column()。 Write() 只会将值打印到 JMP 日志中。 然后还有数据表下标,您可以使用 Tabulate() 或 Summary() 来计算统计信息(甚至可以将 Distribution 与 make 组合成数据表)。
对于“强制”值为数字(请注意这一点,因为这会导致数据丢失),您可以尝试使用 << Set Data Type("Numeric")
有关函数的更多信息,请参见 JMP 帮助菜单中的脚本索引
您描述的项目可以使用内置 JMP 平台之一在 JMP 中生成。而一旦平台以交互方式运行,运行它的 JSL 可以直接从 JMP 获得。我建议您采取不同的方法来解决您的问题。
下面是他运行平台后的起始数据表和结果数据表。


您可以使用 JMP 以交互方式获得所需的内容。 我将使用 Sample Data 文件夹中的 Fitness 进行说明。 假设数据表是打开的。
第 1 步:计算统计数据
- 启动分配具有所有感兴趣的数据列的平台(年龄通过最大脉冲)。
- 右键单击汇总统计表并选择制作组合数据表.
第 2 步:按照您想要的方式重新排列结果。
- 选择表格 > 拆分. 选择是列并单击拆分依据. 选择第 2 栏并选择拆分列. 选择保留全部. 点击好的.




我的意思只是为了说明一个快速的交互式过程。 它可以在脚本中捕获为@txnelson建议。 可以根据需要在每个步骤进行定制。