阅读(4559) (1)

SAS交叉表格

2016-12-12 13:47:32 更新

交叉制表涉及使用两个或更多变量的所有可能组合来产生也称为偶然表的交叉表。 在SAS中,它使用PROC FREQ以及TABLES选项创建。 例如 - 如果我们需要每个车型类别中每个车型的每个车型的频率,那么我们需要使用PROC FREQ的TABLES选项。

语法

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

PROC FREQ DATA = dataset;
TABLES variable_1*Variable_2;

以下是使用的参数的描述:

  • Dataset是数据集的名称。
  • Variable_1Variable_2是需要计算其频率分布的数据集的变量名称。

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

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;

当执行上面的代码中,我们得到以下结果:

3个变量的交叉制表

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

在下面的例子中,我们找到每种类型的汽车和每种车型的车型相对于汽车的频率。 另外,我们使用nocol和norow选项来避免和和百分比值。

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

当执行上面的代码中,我们得到以下结果:

4个变量的交叉表

对于4个变量,配对组合的数量增加到4.来自组1的每个变量与组2的每个变量配对。

在下面的例子中,我们找到每个车型和每个车型的汽车长度的频率。 类似地,每个制造和每个模型的马力频率。

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

当执行上面的代码中,我们得到以下结果: