我正在尝试创建一个 Class 对象,其中包含我在处理分布报告时发现有用的方法和属性。
当我不尝试过滤报告或数据表时,我的一切都按照我想要的方式工作,但是当我尝试过滤报告时,我开始遇到问题。
主要问题是在我进入显示树以提取和保存不反映过滤器的值时过滤报告之后。例如,如果我正在分析的列在过滤前的平均值为 132,过滤后的平均值为 134,则分布报告将显示 134 的平均值,但显示树将输出 132。
Make Distribution = Method({filter={}},
Try(
Column(dt,col) << Set Name("Data");
show(NItems(filter)!=0);
If(
NItems(filter)!=0,
dist = dt << Distribution(
Automatic Recalc( 1 ),
Continuous Distribution( Column( :Data ),
Local Data Filter(
Add Filter(Where(:Data >= filter[0] & :Data<= filter[1]))
)
),
),
dist = dt << Distribution(Automatic Recalc(1),Continuous Distribution(Column(:Data)));
);
rdist = dist << Report;
show(rdist[1]);
tmp = rdist["Summary Statistics"][NumberColBox(1)] << Get As Matrix;
mean = tmp[1];
stdev = tmp[2];
std_err_mean = tmp[3];
up_95_mean = tmp[4];
low_95_mean = tmp[5];
N = tmp[6];
dist_graph = rdist[OutlineBox("Data")][PictureBox(1)];
Column(dt,"Data") << Set Name(col);
,
Throw("Error in Making Distribution: "||char(exception_msg))
);
);以上是我制作分布报告、添加本地过滤器以及从显示树中提取汇总统计值的方法。
我也尝试过使用 Select Where 和 Delete Rows 例程,但是在下面的方法内部时,Select Where 没有做任何事情。
Filter Table = Method({filter},
dt << Select Where(Column(dt,col)<FILTER>filter[2]);
dt << Delete Rows;
);</FILTER>我这样做是因为我经常需要从分布报告中获取各种汇总统计数据或元素,这使它成为一种简单的语法并且易于更改。
我已将完整的课程附加到这篇文章。
任何帮助,将不胜感激。
你好,
我做出回应是因为我在 JMP 13 中看到了类似的行为。当我有一个附加的数据过滤器时,我可以获取值并将其设置为列,并进行表排序和表汇总操作,但通过行选择获得随机结果。 我的解决方法是将列值作为向量(对数字列进行分析)并使用 loc() 函数。 然后我进行了计算并相应地更新了表格值。
已通知 JMP 支持。 我会标记他们查看这篇博文,因为您描述的行为似乎是相同的。
@awsmagala ,
我建议在平台应用后的数据表构建之间使用等待引入一个小的延迟。
Wait(0.1);