我目前正在創建一個 SQL 查詢結果的數據表。 最終的數據表具有合併共享列組並合併共享值行的設置(參見表 1)。
數據有時具有數值,但大多數結果都是字符串,如“Negative”或“< 0.1”。 我用字符/標稱值總結數據表的方法是根據測試類型轉置結果。 我可以對列進行分組,但是當我將數據表作為報告發送到新窗口或日誌頁面時,它不會顯示分組的列。 我不能使用製表,因為它只匯總數值,並且當您將其放入數據表時,它也不允許您保留格式。 我也無法為製表表中的單元格著色。 我只希望能夠像 tabulate 那樣向常規數據表添加子類別和嵌套列/行。 我想知道是否有任何方法可以使用 JSL 代碼實現我在 JMP 中尋找的內容,如果沒有,這可以是功能請求嗎?
表格1。 決賽桌示例

JMP 不允許您對行進行分組。製表不會對行進行分組,它只是將一些行留空(見下文)。
如果您查看 Tabulate 的樹結構,您會注意到 JMP 使用特殊的結構,例如MultiTblStrColBox和MultiTblNumColBox創建表格的表格。這些不是用戶可以在 JSL 中創建的東西。下一個最好的事情是利用<<獲取報告使用一些花哨的組和名稱處理來創建類似的東西表格框-- 我們確實可以在 JSL 中訪問它。這是一個快速功能“製表的“我把它放在一起,它可以獲取一個表格,該表格在其單元格上具有指定的顏色以及您可能想要的任何列分組,並創建類似表格的東西。您確實需要在以下範圍內指定一個表和特殊分類列:
Names Default To Here( 1 );
table = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
theGroup = table << Group Columns( "BP", :BP 8M :: :BP 8W );
theGroup = table << Group Columns( "ELSE", {:BP 12W, :BP 6W} );
For( i = 1, i <= N Cols( table ), i++,
For Each Row( table,
Column( table, i ) << Color Cells( Eval List( Repeat( {Random Uniform( 0.9, 1 )}, 3 ) ), Row() )
);
);
tabulatish = Function( {table, category},
{Default Local},
column names = table << Get Column Names( "String" );
For( i = 1, i <= N Items( column names ), i++,
If( Uppercase( category ) == Uppercase( column names[i] ),
category = column names[i];
Break();
)
);
Eval( Parse( Eval Insert( JSL Quote(
table << Sort( By( :Name("^category^") ), Order( "Ascending" ), "Replace Table" );
) ) ) );
categories = Associative Array( Column( table, category ) ) << Get Keys;
locs = Repeat( {""}, N Rows( table ) );
For( i = 1, i <= N Items( categories ), i++,
locs[(Loc( Column( table, category ) << Get Values, categories[i] ))[1]] = categories[i]
);
nt = New Table( "temp", <<NEW column=""></NEW>

這看起來很有希望!! 謝謝! 我會讓你知道它是否有效。
編輯:花了一上午的時間瀏覽你的代碼。 弄清楚如何構建更多自定義表對我來說是一個很好的開始。 謝謝! 我很感激時間和精力。 有沒有辦法將列上方的跨度框添加到已經存在的表中? 例如,假設我在沒有額外分類的情況下組織了表格。 我不想逐列拼湊表格。 我只想在上面彈出它。 希望這是有道理的。