SAS - 交叉表



交叉表涉及使用兩個或多個變數的所有可能組合生成交叉表,也稱為列聯表。在 SAS 中,它是使用PROC FREQ以及TABLES選項建立的。例如 - 如果我們需要每個汽車型別類別中每個品牌的每個型號的頻率,那麼我們需要使用 PROC FREQ 的 TABLES 選項。

語法

在 SAS 中應用交叉表的語法如下:

PROC FREQ DATA = dataset;
TABLES variable_1*Variable_2;

以下是所用引數的說明:

  • 資料集是資料集的名稱。

  • 變數_1 和變數_2是需要計算其頻率分佈的資料集的變數名稱。

示例

考慮查詢從資料集 cars1(從SASHELP.CARS建立,如下所示)中每個汽車品牌下有多少種汽車型別的情況。在這種情況下,我們需要單個頻率值以及跨品牌和跨型別的頻率值之和。我們可以觀察到結果顯示了跨行和跨列的值。

PROC SQL;
create table CARS1 as
SELECT make, type, invoice, horsepower, length, weight
   FROM 
   SASHELP.CARS
   WHERE make in ('Audi','BMW')
;
RUN;

proc FREQ data = CARS1;
tables make*type; 
run;

執行上述程式碼後,我們得到以下結果:

cross_tab_1

三個變數的交叉表

當我們有三個變數時,我們可以將其中兩個分組,並將這兩個變數中的每一個與第三個變數交叉表。因此,在結果中我們有兩個交叉表。

示例

在下面的示例中,我們找到每種汽車型別和每種汽車型號相對於汽車品牌的頻率。我們還使用 nocol 和 norow 選項來避免總和和百分比值。

proc FREQ data = CARS2 ;
tables make * (type model)  / nocol norow nopercent;   
run;

執行上述程式碼後,我們得到以下結果:

cross_tab_2

四個變數的交叉表

對於 4 個變數,配對組合的數量增加到 4。組 1 中的每個變數都與組 2 中的每個變數配對。

示例

在下面的示例中,我們找到每種品牌和每種型號的汽車長度的頻率。同樣地,每種品牌和每種型號的馬力的頻率。

proc FREQ data = CARS2 ;
tables (make model) * (length  horsepower)  / nocol norow nopercent;   
run;

執行上述程式碼後,我們得到以下結果:

cross_tab_3
廣告