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
广告