SAS - 交叉表

交叉制表涉及使用两个或多个变量的所有可能组合生成交叉表,也称为条件表。 在 SAS 中,它是使用 PROC FREQTABLES 选项创建的。 例如 - 如果我们需要每个车型在每个车型类别中的每个品牌的频率,那么我们需要使用 PROC FREQ 的 TABLES 选项。


语法

在 SAS 中应用交叉表的基本语法是 −

PROC FREQ DATA = dataset;
TABLES variable_1*Variable_2;

以下是使用的参数说明 −

  • Dataset 是数据集的名称。

  • Variable_1 和 Variable_2 是需要计算其频率分布的数据集的变量名称。

示例

考虑从 SASHELP.CARS 形式创建的数据集 cars1 中找出每个汽车品牌下有多少汽车类型的情况,如下所示。在这种情况下,我们需要各个频率值以及跨品牌和跨类型的频率值之和。 我们可以观察到结果显示跨行和列的值。

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

3 个变量的交叉表

当我们有三个变量时,我们可以将其中的 2 个分组,并将这两个变量中的每一个与第三个变量进行交叉制表。 在结果中我们有两个交叉表。

示例

在下面的示例中,我们找到了每种类型的汽车和每种型号的汽车相对于汽车品牌的频率。 我们还使用 nocol 和 norow 选项来避免总和和百分比值。

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

当上面的代码执行时,我们得到如下结果 −

cross_tab_2

4 个变量的交叉列表

对于 4 个变量,配对组合的数量增加到 4 个。第 1 组的每个变量都与第 2 组的每个变量配对。

示例

在下面的示例中,我们找到了每个品牌和每个型号的汽车长度频率。 同样,每个品牌和每个型号的马力频率。

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

当上面的代码执行时,我们得到如下结果 −

cross_tab_3