SAS - 交叉表

交叉制表包括使用两个或多个变量的所有可能组合生成也称为或有表的交叉表.在SAS中,它是使用 PROC FREQ TABLES 选项创建的.例如 - 如果我们需要每个汽车类型类别中每个品牌的每个型号的频率,那么我们需要使用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