如何计算SAS Proc Sql中两个变量的串联/交叉的不同值?
我知道,在teradata或其他sql平台中,通过执行以下操作,可以发现变量组合的计数不同: 选择计数(不同x1 | | x2) 来自数据库表 这将给出x1,x2对的所有唯一组合 但是,此语法在proc sql中不起作用 在proc sql中是否仍有执行此类计数的方法如何计算SAS Proc Sql中两个变量的串联/交叉的不同值?,sas,proc-sql,Sas,Proc Sql,我知道,在teradata或其他sql平台中,通过执行以下操作,可以发现变量组合的计数不同: 选择计数(不同x1 | | x2) 来自数据库表 这将给出x1,x2对的所有唯一组合 但是,此语法在proc sql中不起作用 在proc sql中是否仍有执行此类计数的方法 谢谢。这种语法在PROC-SQL中工作得非常好 proc sql; select count(distinct name||sex) from sashelp.class; quit; 如果字段是数字字段,则必须将其
谢谢。这种语法在PROC-SQL中工作得非常好
proc sql;
select count(distinct name||sex)
from sashelp.class;
quit;
如果字段是数字字段,则必须将其设置为字符(使用put
)或使用cat
或它的一个同级字段,它们可以选择数字或字符
proc sql;
select count(distinct cats(age,sex))
from sashelp.class;
quit;
这可能是多余的,但当你提到“组合”时,它立刻在我脑海中引发了“排列”。因此,这里有一个解决方案来区分这两种:
DATA TEST;
INPUT (X1 X2) (:$8.);
CARDS;
A B
B A
C D
C D
;
PROC SQL;
SELECT COUNT(*) AS TOTAL, COUNT(DISTINCT CATS(X1,X2)) AS PERMUTATION,
COUNT(DISTINCT CATS(IFC(X1<=X2,X1,X2),IFC(X1>X2,X1,X2))) AS COMBINATION
FROM TEST;
QUIT;
数据测试;
输入(X1-X2)($8.);
卡;
A B
B A
C D
C D
;
PROC-SQL;
选择计数(*)作为总数,选择计数(不同类别(X1,X2))作为排列,
将(不同的猫(IFC(X1X2,X1,X2))计数为组合
从测试开始;
退出
您可以在proc sqlRight中进行计数(不同的列名称),但我不想要sing变量的计数;我想要两个(或更多)变量组合的不同数量的计数。谢谢!。我的两个字段都是数字字段,所以我不得不使用cats(x1,x2),它工作了。看起来它也能实现我想要的。谢谢