SAS - 交叉表


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

句法

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

PROC FREQ DATA = dataset;
TABLES variable_1*Variable_2;

以下是所使用参数的描述 -

  • 数据集是数据集的名称。

  • 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 个变量的交叉表

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

例子

在下面的示例中,我们找到每种类型的汽车和每种型号的汽车相对于汽车品牌的频率。我们还使用 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