从交叉表转移到新表时舍入错误你好,
我正在使用 JMP 版本 16。
我正在从 CrossTab 表中传输数据。我要求它四舍五入到小数点后 3 位。然后,它会将数据保存为一个字符串,该字符串将用于将结果打印到表格中。请参阅下面的代码。
// Get data from CrossTab table
crossTab = reportFitmod[Outline Box( "LSMeans Differences Student's t" )][CrosstabBox( 1 )] << get as matrix;
meandiff = Round( crossTab[1, 2] , 3 );
lowerCL = Round( crossTab[3, 2] , 3 );
upperCL = Round( crossTab[4, 2] , 3 );<BR /><BR /> // Create the Difference in mean and CL string<BR />Insert Into( dif, Char( meandiff ) || " [" || Char( lowerCL ) || " ; " || Char( upperCL ) || "]" );
对于该报道我有两个疑问:
1. 为什么指定报告 3 位小数,但将 0.019 报告为 0.02,而不是 0.020?
2. 以前这个方法可以正常工作,但现在不行了——它会把 0.0015 的值四舍五入为 0.001,而不是 0.002。你知道为什么会这样吗?该如何修复?我希望它保持正常的舍入规则(4 位或更少向下取整,5 位或更高向上取整)。
基础数据分析与建模回复:从交叉表转移到新表时舍入错误1. 我认为如果你希望在 JMP 中保留这些额外的零,你必须指定格式并转换为字符串
Format(1.100, "Fixed Dec", 10, 3)
2. 你确定你四舍五入的是 0.0015 而不是其他数字吗?你的矩阵中实际值是多少?即使平台显示的是 0.0015,实际值很可能更准确,比如 0.00149,它最终会被四舍五入为 0.0015。
回复:从交叉表转移到新表时舍入错误你好,Jarmo,
谢谢您的回复!
1. 我会尝试一下,谢谢。
2. 它应该转到交叉表并从第二列、第 1 行、第 3 行和第 4 行(平均值 [i]-平均值 [j]、下限 CL 差异和上限 CL 差异)中取出。
请参见下图。

平均差异用这一行打印
meandiff = Round( crossTab[1, 2] , 3 );
它应该四舍五入到小数点后三位,而且应该按照正常的舍入规则进行四舍五入。但它四舍五入不正确,我不明白哪里出了问题。
回复:从交叉表转移到新表时舍入错误你检查过它的实际值吗?你在JMP报告中看到的那些值很可能已经是四舍五入的值了。这是在JMP18中完成的。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Drug.jmp");
obj = Fit Model(
Y(:y),
Effects(:Drug, :x),
Personality(Standard Least Squares),
Emphasis(Effect Leverage),
<< Run(:Drug << {LSMeans Student's t(.05, Ordered Differences Report(1))})
);
m = Report(obj)["Response y","Drug","LSMeans Differences Student's t",CrosstabBox(1)] << get as matrix;
show(m);

回复:从交叉表转移到新表时舍入错误我无法让它运行以下行
m = Report(obj)[ :Result , :Person , "LSMeans Differences Student's t" , CrosstabBox(1)] << get as matrix;
于是我打开了有序差异报告。在这里我可以看到,总差异为 0.0015000,因此它没有被双精度舍入。

回复:从交叉表转移到新表时舍入错误您已经有了针对您的案例提取矩阵的脚本
crossTab = reportFitmod[Outline Box( "LSMeans Differences Student's t" )][CrosstabBox( 1 )] << get as matrix;
只需通过打印交叉表来验证值
回复:从交叉表转移到新表时舍入错误啊,谢谢!我把结果拿出来,发现这是因为当四舍五入到小数点后两位而不是三位时,四舍五入的方式就不一样了。
交叉制表 = [0 0.00149999999999987, 0 0.000298142396959379, 0 0.000835697341910363, 0 0.00216430265808938, -0.00149999999999987 0, 0.000298142396959379 0, -0.00216430265808938 0, -0.000835697341910363 0];
非常感谢你的帮助:)