大家好,
我有一個包含 40 列和 300 多行的資料集。
對於每一列(= 事件名稱),值都是二進位的,表示每行是否參加該事件。
我有興趣了解不同活動/專欄之間的出席率是否有相關性。
我設法用散點圖矩陣將其視覺化。
我調整了矩陣的軸,只顯示兩個列/事件的值為 1 的值,因為我只對散佈圖矩陣的兩個事件都由一行參與的情況感興趣。
我的散佈圖矩陣如下圖所示,但要大得多。
每個點都是一行,散佈圖矩陣的兩個事件/列的值為 1。
但是,計算事件/列的許多不同可能組合中的點(=散點圖矩陣的各個框/子圖)是非常困難的。
我的問題是:是否可以將各個框中的點更改為每個單獨框的實際計數?

散點圖矩陣的語法如下所示
請注意,為了方便閱讀,我沒有列出所有事件名稱,僅列出了 2 列/事件的比例框合成器。
這以紅色文字突出顯示。
:
散點圖矩陣(
Y(
:這是一個包含約 40 個欄位/事件名稱的長列表,
矩陣格式(“下三角”),
發送至報告(
派遣(
{},
“140”,
秤盒,
{最小值( 0.5 )、最大值( 1.5 )、增量( 1 )、小刻度( 0 )}
),
派遣(
{},
“139”,
秤盒,
{格式(“最佳”,15),最小值(0.5),最大值(1.5),增量(1),
小刻度( 0 )}
),
接下來是其他 38 個欄位/事件的 38 個更類似的程式碼片段。
這是一個使用計數建立新資料表的腳本

這將為您提供散點圖計數,然後建立一個儲存格圖,為您提供值的顏色圖。

Names Default to Here( 1 );
dt = Current Data Table();
dtCounts = New Table( "Counts", add rows( 40 ) );
dtCounts << delete columns( :column 1 );
For( i = 1, i <= 40, i++,
dtCounts << New Column( "c" || Char( i ), set each value( . ) )
);
For( i = 1, i <= 40, i++,
For( k = i, k <= 40, k++,
theCount = Length( dt << get rows where( As Column( dt, i ) == 1 & As Column( dt, k ) == 1 ) );
dtCounts[i, k] = theCount;
dtCounts[k, i] = theCount;
)
);
dtCounts << New Column( "The Columns", character, set each value( "c" || Char( Row() ) ) );
dtCounts << move selected columns( :The Columns, to first );
dtCounts << Cell Plot(
Scale Uniformly( 1 ),
Center at zero( 0 ),
Y(
:c1, :c2, :c3, :c4, :c5, :c6, :c7, :c8, :c9, :c10, :c11, :c12, :c13, :c14, :c15, :c16, :c17, :c18,
:c19, :c20, :c21, :c22, :c23, :c24, :c25, :c26, :c27, :c28, :c29, :c30, :c31, :c32, :c33, :c34, :c35,
:c36, :c37, :c38, :c39, :c40
),
Label( :The Columns ),
Legend( 1 ),
SendToReport(
Dispatch( {}, "Cell Plot Report", FrameBox, {Frame Size( 79, 23 )} ),
Dispatch( {}, "", Lineup Box( 2 ), {Spacing( 1 )} )
)
);
非常感謝!
當隨機檢查多個值時,帶有計數的新資料表是有意義的。
但不知何故,表格和相應的數字在第 16 列之後停止,請參見下文。
我在我簡單複製和貼上的腳本中沒有看到任何異常(即沒有多餘的逗號或我不小心放入其中的內容)。
有什麼建議嗎?為什麼會這樣?

可以附上您的資料副本嗎?如有必要,您可以在附加資料之前對其進行匿名化。
此外,您的顯示有 41 列,程式碼假設有 40 列。