你好,
我刚刚在表格/摘要中发现了 2 个严重的错误。
其中一个甚至可以用来使任何 PC 上的 JMP 崩溃(!!!)
Bug 1)请阅读此代码并预测 Jmp 会做什么:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Summary(
Local Data Filter( Add Filter( columns( :sex ), Where( :sex == "X" ) ) ),
Group( :sex ),
Mean( :height ),
Link to original data table(0),
output table name( "average o students with sex = \!"X\!"" )
);
BigClass 中没有性别为“X”的学生。因此,我预计列表为空:
筛选条件:性别 = “X” / 表中无“X” -> 空汇总表
不幸的是,Jmp 中的逻辑却出奇地不同:
如果数据过滤器没有找到匹配项,数据过滤器将被重置并显示所有数据。
对于仪表板, 使用 Jmp Dashboards 进行异常值 (:alien:) 筛选 - 怎么做? TS-00046650,不应用限制“只是”很烦人 - 对于通过表格/摘要进行自动统计分析,问题更加严重:最后,结果错误 - 仪表板左侧没有数据过滤器,用户可以检测并纠正问题。
从 Jmp 17 开始,有了这个很酷的新功能:删除排除的行
不幸的是,有:
漏洞 # 2:
如果您有 Jmp 17 或 Jmp 18 EA,请尝试运行此代码两次 -存储您的数据,Jmp 将崩溃!
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Summary(
Local Data Filter( Add Filter( columns( :sex ), Where( :sex == "F" ) ) ),
Group( :sex ),
Mean( :height ),
Remove Excluded Groups,
Link to original data table(0)
);
// today no females
dt << Select where( :height < 67 ) << Exclude;
第一次运行代码后,由于数据过滤器的限制,汇总表显示的是女性条目的平均身高。然后代码末尾的一行排除了所有身高 < 67 的行,其中包括所有女性条目。
现在再次运行代码:
sex="F" 的行仍然存在,只是被排除了。因此,与错误 #1 相比,此处的数据过滤器没有被重置。
它将分析限制在性别为“F”的行。这些行被数据表的数据过滤器排除。
总的来说,没有匹配的非排除行。结果:删除排除行有很多事情要做 - 并且会生气。
生气得Jmp崩溃了。
显然,如果没有匹配的行,用户从结果中获益不大。但在较长的脚本中可能会出现类似以下内容:
请计算班级中符合通过主表应用的一些附加过滤设置的女学生的平均身高。
底下是:
假设我想统计一个班的女生人数并计算她们的平均身高。通过使用带有数据过滤器的Jmp/Tables/Summary :
- 如果班上没有女学生,Jmp 将统计男学生人数并计算他们的平均年龄(!!!)
- 如果班级中有 >=1 名女学生,但相应行被排除,Jmp 将崩溃(!!!)
[如果启用了“删除排除的行”]
@hogi写道:
对于仪表板, 使用 Jmp Dashboards 筛选异常值 (:alien:) - 如何进行? TS-00046650,不应用限制“只是”令人烦恼 - 对于通过表格/摘要进行自动统计分析,问题更加严重:最后,出现错误的结果 - 仪表板左侧没有数据过滤器,其中用户可以检测并纠正问题。
相同的主题 - >相同的解决方案:
本地数据过滤器:选项:限制或不限制当前数据
我今天收到了 TS 曲目,将进行调查并将发回发现的任何内容。
@hogi
很有意思。
我在 JMP 17 和 18 中复制了您的发现。
我假设您已将此问题提交至 support@jmp.com
第二个错误已在 JMP18.1(或之前版本)中修复。我现在才注意到它
第一个错误的好解决方法:
:folded_hands: 列属性:包容性值