SAS – 交叉表

SAS – 交叉表


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

句法

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

PROC FREQ DATA = dataset;
TABLES variable_1*Variable_2;

以下是所用参数的描述 –

  • 数据集数据集的名称。

  • Variable_1 和 Variable_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

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁