<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,我正在尝试创建一个动态脚本,该脚本将在报表中创建列联表,并根据用户选择的列分配创建关联统计信息。这是我第一次尝试JSL,所以我是一个绝对的初学者。我有用户表单和表创建工作,但我正在努力理解如何引用生成的报告的不同部分,以便做一些简单的事情,如设置kappa统计的十进制格式。最后,我还希望能够从显示的列联表中提取值进行计算,并在报告的其他位置显示结果。我一直在阅读有关下标的内容,并尝试使用该概念深入研究报告,但我无法弄清楚如何正确使用它们。我知道我需要对这个概念有一个很好的理解,因为用户将能够从2列到10列进行选择,因此脚本可以生成1到25个列联表,我需要跟踪并参考后来。所以我知道最好为每个变量分配变量,但我无法弄清楚,因为表的构建是由JMP自动完成的,而不是像For循环那样使用。很感谢任何形式的帮助我也非常喜欢有关JSL脚本的任何反馈,这些反馈与我的具体问题(例如最佳实践等)无关,用于学习目的。
我正在努力的部分是用/ * ------ * /注释掉的部分。对于过多的评论感到抱歉,但作为我的第一个脚本,我试图捕捉我未来的自我可以回顾的概念。我在Windows 7上使用JMP 10.0.1第2版。我在JMP中找不到一个典型的我正在使用的样本数据集,所以这里是一个微型版本:
| SampleID | 试验#1 | 试验#2 | 参考 |
| 307HV093 | 负 | 负 | 负 |
| 307HV093 | 负 | 负 | 负 |
| 307HV094 | 正 | 正 | 正 |
| 307HV094 | 正 | 正 | 正 |
| 307HV095 | 正 | 正 | 正 |
| 307HV095 | 正 | 正 | 正 |
| 307HV096 | 正 | 正 | 正 |
| 307HV096 | 正 | 正 | 正 |
| 307HV097 | 负 | 负 | 负 |
| 307HV097 | 负 | 负 | 负 |
| 307HV098 | 负 | 负 | 负 |
//基于JMP脚本编制指南JMP 10的“构建显示树”第363页
清除全局 () ;
名称默认为此处 ( 1 ) ; //所有非范围变量都是本地变量
如果 ( 是空的 ( DT = currentdatatable ()) , DT = 打开 ( pickfile ( “选择一个输入数据文件:” ))) ;
// savedir = pickdirectory(“选择摘要文件的目标文件夹:”); //稍后再使用
DT = currentDataTable () ; NC = 的NcoI ( DT ) ; //获取表格中的#列数
lbWidth = 130 ;
未实现 = EXPR ( 新窗户 ( “功能尚未实现” ,<< 语气 , ButtonBox ( “好” ))) ; //我不知道<< modal的作用
clusterDlg = 新窗户 ( “2x2列联表和统计” , //为用户选择列创建一个新窗口
BorderBox ( 剩下 ( 3 ) ,最佳 ( 2 ) ,
VListBox (
文本框 ( “比较分析” ) ,
HlistBox (
VListBox (
PanelBox ( “选择列” , //框列出可用的列
colListData = ColListBox ( 所有 ,宽度 ( lbWidth ) , nLines ( 分 ( NC , 10 ))) //使用标准宽度lbWidth(130)的数据表中所有列的列表框
) ,
) ,
PanelBox ( “将选定的列转换为角色” , //框用于指定要分析的列
LineupBox ( NCOL ( 2 ) ,间距 ( 3 ) ,
ButtonBox ( “分析,专栏” ,
colListY << 附加 ( colListData << GetSelected )) , //获取所选列并将它们添加到colListY列表框中
colListY = ColListBox ( 宽度 ( lbWidth ) , nLines ( 五 )) , //行数限制为5,这可以扩展,但对于大多数研究来说应该足够了
ButtonBox ( “参考或比较测试,专栏” ,
colListB << 附加 ( colListData << GetSelected )) , //指定1列作为参考或“比较”测试以与其他列进行比较(这将最终作为X并影响未来的统计数据)
colListB = ColListBox ( 宽度 ( lbWidth ) , nLines ( 五 )) //行数限制为5,增加了额外比较的结果
//顺序将是每个测定(Y)的第一参考(X),每个测定的第二参考等等
) ,
) ,
PanelBox ( “行动” ,
LineupBox ( NCOL ( 1 ) ,
ButtonBox ( “好” ,
contwin = 新窗户 ( “应变结果” || 烧焦 ( 格式 ( 作为日期 ( 今天 ()) , “ddMonyyyy” )) ,
Tabbox ( “列联表” , HListBox (
续 = 偶然性 ( // cont是对平台的引用(分析图层)
ÿ ( colListB << 得到物品 ) ,
X ( colListY << 得到物品 )) ; //应急
续 << 列联表 (
计数 ( 1 ) ,
总百分比 ( 0 ) ,
Col% ( 0 ) ,
行% ( 0 ) ,
预期 ( 0 ) ,
偏差 ( 0 ) ,
Cell Chi Squared ( 0 ) ,
Col Cum ( 0 ) ,
Col Cum% ( 0 ) ,
行暨 ( 0 ) ,
行暨% ( 0 ) ,
) ;
续 << 大小的窗口 ( 500 , 700 ) ; //我希望列联表能够停止切断单词,但我似乎无法将其变大
续 << 马赛克情节 ( 0 ) ; //关掉
续 << 测试 ( 0 ) ;
续 << 协议统计 ( 1 ) ; //打开
rcont = 续 << 报告 ; //对报告的引用
/ * rcont [“协议统计”,“鲍克的测试”] <<关闭(1)
for(i = 1,i <= nitems(rcont),i ++,
kap = rcont(列联表(i)[“协议统计”,“Kappa系数”]);
kapset = KAP [NumberColbox( “卡帕”)];
kap << set format(8,3);
kap << set Conditional Format(“Correlation”);
rcont(SendToReport(
派遣(//可能派遣会更好吗?
{“协议统计”,“Kappa Coefficient”},
“卡帕”,
NumberColBox,
{设置格式(8,3),设置条件格式(“相关”)}
)); * /
) , // H列表框
“2x2意外事件副本” , //第二个标签
// testval = reportcont [TableBox(1)];需要弄清楚如何获取列联表值
// matrixbox(testval << get as matrix))
)) // tabbox
) ; //窗口,删除“;”“导致对话框窗口不关闭
clusterDlg << 关闭窗口 ) , //确定按钮框
ButtonBox ( “取消” ,
clusterDlg << 关闭窗口 ) ,
文本框 ( “” ) ,
ButtonBox ( “去掉” , //从两个化验列表框中删除选定的列
colListY << 删除选定 ;
colListB << 删除选定 ;
) ,
ButtonBox ( “召回” ,未实现 ) , //尚未编程
ButtonBox ( “救命” ,未实现 )) //尚未编程
) //面板框
) // hlistbox
) // vlistbox
) // borderbox
) ; //窗口(cluster dlg)