将计算统计中的项目传递到保存的数据表中的特定坐标我生成了几个带有计算统计数据的图表。 我想传递特定的计算统计参数,例如最小值、中值和最大值分位数和 Std Dev 来自汇总统计到使用 JSL 保存的数据表中的特定坐标。
例如我想传递
- 到第 5 行第 7 列的最小分位数
- 中位数到第 5 行第 8 列
- 到第 5 行第 9 列的最大分位数
- Std Dev 到第 5 行第 10 列。
到我保存的数据表。 如何使用 JSL 实现这一目标?
(坐标在保存的数据表中为空开始)
数据表图形脚本编写回复:将计算统计中的项目传递到保存的数据表中的特定坐标我认为数据表下标可以帮到你
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[10,3] = "AAAAAAAAAAAAAA";回复:将计算统计中的项目传递到保存的数据表中的特定坐标你好@新
看看你是否可以从这个脚本中提取你需要的东西
Names Default To Here( 1 );
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 20 ),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
// Open Data Table: Big Class.jmp
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Launch platform: Distribution
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
// Extract min median max and SD
resultsdt[5, 7] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = output[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
在从输出中提取数字时,需要小心。 如果输出因偏好而不同或仅在一个窗口中包含多个输出,则对位置的正确引用可能会发生变化。
让我们知道它是否有效。
朗
回复:将计算统计中的项目传递到保存的数据表中的特定坐标谢谢@ron_horne . 我认为这会奏效。 但是,在对我的实际问题进行尝试之前,我有一个问题。 在将值传递给它之前,是否需要打开“结果表”?
在我的情况下,“结果表”是一个保存的文件,我不打算打开它,除非不可能将值传递给它。
(如果我需要在将值传递给它时在实例中打开我的“结果表”,我将需要更改我的其余代码)
回复:将计算统计中的项目传递到保存的数据表中的特定坐标
你好@新
据我所知,JMP 无法将数据设置到封闭表格的单元格中。
如果这里的其他人更了解,请告诉我们。
也许您可以打开另一个表格作为中介,以便在您仍在收集时将信息保留在那里,并且只有在最后才打开最终结果表格。
朗
回复:将计算统计中的项目传递到保存的数据表中的特定坐标@ron_horne . 谢谢。 我花了一些时间重新编码,以便我可以拥有可以将计算统计中的值打开的“结果表”传递给它。
我已经从你的建议开始,有一个问题。 为什么这不起作用?
distb = Distribution( Continuous Distribution( Column( :height ) ) ) ;
// Extract min median max and SD
resultsdt[5, 7] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = distb[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
为什么一定要这样?
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
我有多个分布图,我可以轻松地分配一个名称,例如 distb1、distb2……但是如果我需要的话
output = Report( dist = dt << Distribution( ..... ) );
我需要检查这如何影响我的其余代码。
回复:将计算统计中的项目传递到保存的数据表中的特定坐标嗨,尼奥,
您对 distb 的引用不起作用正弦 distb 不是任何报告层。它是分析层。 在 JMP 中,它们之间存在差异。
为了从输出中提取任何内容,您需要明确引用报告层。
看到这个: https://community.jmp.com/t5/JSL-Cookbook/Extract-Statistics-from-an-Analysis-into-a-Report/ta-p/41547
如果您有多个输出,则需要正确命名和定义它们,以确保获得目标值。
让我们知道它是否有效。否则,请考虑从给您带来问题的角度提供一些文件和脚本。
祝一切顺利,
朗
回复:将计算统计中的项目传递到保存的数据表中的特定坐标谢谢@ron_horne . 让我试着概述一下我正在尝试做的事情。 我的主脚本具有以下(此处简化)流程。
打开一个数据表(并调用它dt ),然后使用函数绘制其中几列的分布图
getDistribution ("ColName", "LSL", "USL", "other input parameters")
每个生成的分布图都有“分位数”、“汇总统计”和“能力分析(轮廓闭合)”。
主脚本的下一部分是创建一个表(让我们称之为结果) 有几行和几列,我需要在其中传递原始帖子中指示的计算统计值。
但是,以下方法不起作用。
output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 6 ), Number Col Box( 11)] << get( 1 ); // max
我已经确定 Table Box () 和 Number Col Box () 中的数字是正确的。 我收到以下错误
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 6 ), Number Col Box( 11 )] << /*###*/get( 1 ) /*###*/
我哪里错了?
回复:将计算统计中的项目传递到保存的数据表中的特定坐标你好@新,
如果我正确理解您的问题,您需要注意编号和地址。一旦您使用大纲框的名称,表格框和编号列框的编号从 1 开始。
因此,请尝试以下操作:
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
如果你想使用 Number Col Box (11) 试试这个:
resultsdt[5, 9] = Output[Number Col Box( 11)] << get( 1 ); // max
希望这现在有效。
通常,使用 xpath () 或模式匹配让脚本找到感兴趣的值的位置有很多更有趣的方法,如此链接所示: http://www.pega-analytics.co.uk/blog/oneway-advisor-step-3/
回复:将计算统计中的项目传递到保存的数据表中的特定坐标再次感谢@ron_horne ,但这些都不起作用,并给我同样的错误。
您是说以下是正确有效的用法吗? 注意它是不绘图如果使用如下所示的分布(顺便说一句,我不明白区在距离=dt ?)
Output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
和错误(从日志复制)
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , Output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/Not subscriptable value{8} in access or evaluation of 'Assign' , resultsdt[5, 9] = /*###*/Output[Outline Box( "Pass Distribution" ),
Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/
/*###*/
我得到的是由于我的以下声明(即使您在下面提出建议)
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
如果,是的,我想做一个简单的测试并将一些更直接的东西传递给 resultsdt。 有没有我可以做的简单测试来测试我是否能从中得到任何东西输出到数据表结果?
回复:将计算统计中的项目传递到保存的数据表中的特定坐标@ron_horne . 以下应该有助于澄清一些事情,因为它与我的实际问题非常相似。 我通过一个函数得到分布图。
Names Default To Here (1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = dt << getDistChart ("weight", 55, 185);
对我来说,最后一行似乎没有做它应该做的从分布中提取值的工作,因为首先没有绘制分布。 现在的问题是,当分布是通过上面的函数绘制时,如何获得计算统计的值。 也许函数不是消息,所以不能使用 << 发送到对象?
任何帮助都会非常有用,因为我仍在学习 JMP。