创建一个包含SAS中某些列值的所有排列的表
我在《SAS企业指南》中工作,希望创建一个包含某些列的所有可能排列的表。以下是一个例子: 假设我有三列创建一个包含SAS中某些列值的所有排列的表,sas,proc-sql,Sas,Proc Sql,我在《SAS企业指南》中工作,希望创建一个包含某些列的所有可能排列的表。以下是一个例子: 假设我有三列 apple pear plum 0 good blue 1 middle violet bad
apple pear plum
0 good blue
1 middle violet
bad
我希望我的输出表如下所示:
apple pear plum
0 good blue
0 good violet
0 middle blue
0 middle violet
0 bad blue
0 bad violet
1 good blue
1 good violet
1 middle blue
1 middle violet
1 bad blue
1 bad violet
我的实际代码有更多的列和更多的不同值,所以硬编码绝对不是一个选项。如何在SAS中创建这样的表
首先谢谢你的帮助 您可以使用PROC-SQL创建完整的交叉产品
proc sql ;
create table want as
select *
from (select distinct apple from have where not missing(apple))
, (select distinct pear from have where not missing(pear))
, (select distinct plum from have where not missing(plum))
;
quit;
您可以使用procsql创建完整的交叉产品
proc sql ;
create table want as
select *
from (select distinct apple from have where not missing(apple))
, (select distinct pear from have where not missing(pear))
, (select distinct plum from have where not missing(plum))
;
quit;
过程摘要
data testx;
input apple pear $ plum $;
cards;
0 good blue
1 middle violet
1 bad blue
;;;;
run;
proc summary nway completetypes chartype;
class _all_;
output out=testb(drop=_:);
run;
proc print;
run;
Obs apple pear plum
1 0 bad blue
2 0 bad violet
3 0 good blue
4 0 good violet
5 0 middle blue
6 0 middle violet
7 1 bad blue
8 1 bad violet
9 1 good blue
10 1 good violet
11 1 middle blue
12 1 middle violet
过程摘要
data testx;
input apple pear $ plum $;
cards;
0 good blue
1 middle violet
1 bad blue
;;;;
run;
proc summary nway completetypes chartype;
class _all_;
output out=testb(drop=_:);
run;
proc print;
run;
Obs apple pear plum
1 0 bad blue
2 0 bad violet
3 0 good blue
4 0 good violet
5 0 middle blue
6 0 middle violet
7 1 bad blue
8 1 bad violet
9 1 good blue
10 1 good violet
11 1 middle blue
12 1 middle violet
你不想硬编码的是什么?值还是变量名?很容易避免对值进行硬编码。更难避免使用变量名。我不想硬编码每个观察结果。变量名可以。您不想硬编码的是什么?值还是变量名?很容易避免对值进行硬编码。更难避免使用变量名。我不想硬编码每个观察结果。变量名没有问题。请注意,如果您的输入数据在上一次观察中缺少APPLE和PLUM的值,则PROC SUMMARY将删除PEAR='bad'记录,并且只生成8条而不是12条记录。如果添加MISSING选项,则会保留PEAR='bad',但也会输出APPLE和PLUM的缺失值。请注意,如果您的输入数据在上次观察中缺少APPLE和PLUM的值,则PROC SUMMARY将删除PEAR='bad'记录,并且只生成8条而不是12条记录。如果添加MISSING选项,则保持PEAR='bad',但同时输出APPLE和PLUM的缺失值。