<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)