Sas 简明教程

SAS - Cross Tabulations

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

Syntax

在 SAS 中应用交叉制表的语法基本语法为:

PROC FREQ DATA = dataset;
TABLES variable_1*Variable_2;

以下是所用参数的描述 -

  1. Dataset 是数据集的名称。

  2. Variable_1 and Variable_2 是数据集的变量名称,需要计算频率分布。

Example

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

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

Cross tabulation of 3 Variables

当我们有三个变量时,我们可以将其中的 2 个分组,并用第三个变量交叉制表它们。因此,结果中有两个交叉表。

Example

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

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

在执行以上代码后,我们将得到以下结果:

cross tab 2

Cross tabulation of 4 Variables

使用 4 个变量时,成对组合的数量增加至 4。组 1 中的每个变量都与组 2 的每个变量配对。

Example

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

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

在执行以上代码后,我们将得到以下结果:

cross tab 3